使用 pandas 在 excel 中创建多个 sheet 以循环访问 sheet 名称

Create multiple sheets in excel using pandas to loop through sheet names

我正在尝试在 excel 中创建多个 sheet,使用 pandas 与 Python 中的 xlsxwriter 集成,基于类别

中表示的数据]
Categories ="Autoimmune Diseases","Blood","Cancer: Head & Neck","Cancer: Hematological","Cancer: Other","Cardiovascular","Dermatological Treatment","Eyes","Immune Deficiencies","Infectious Diseases","Liver Disease","Neurological","Neurotology","Pain Management","Rare Diseases","Respiratory Diseases","Women's Health"

现在我的代码如下所示:

writer = pd.ExcelWriter(Individualreport, engine='xlsxwriter')
Categories ="Autoimmune Diseases","Blood","Cancer: Head & Neck","Cancer: Hematological","Cancer: Other","Cardiovascular","Dermatological Treatment","Eyes","Immune Deficiencies","Infectious Diseases","Liver Disease","Neurological","Neurotology","Pain Management","Rare Diseases","Respiratory Diseases","Women's Health"

Overview = pd.read_excel(READ,sheet_name='Overview', header=None)
OverviewCols = pd.read_excel(READ, sheet_name='Overview', header=None,nrows=1).values[0]
Overview.columns = OverviewCols

auto = Overview.loc[(Overview['Category']=="Autoimmune Diseases")]
auto.to_excel(writer, sheet_name='Auto', startrow= over_row, startcol=over_col, header=False, index=False)

而且我必须对所有 17 个类别重复,以使每个 sheet 像:

blood = Overview.loc[(Overview['Category']=="Blood")]
blood.to_excel(writer, sheet_name='Blood', startrow= over_row, startcol=over_col, header=False, index=False)

有没有办法循环遍历列表来简化代码?我知道这是不对的,但像这样:

for i in Categories:
    i = Overview.loc[(Overview['Category']==i)]
    i.to_excel(writer, sheet_name=i, startrow= over_row, startcol=over_col, header=False, index=False)

参考您的代码:

for i in Categories:
    i = Overview.loc[(Overview['Category']==i)]
    i.to_excel(writer, sheet_name=i, startrow= over_row, startcol=over_col, header=False, index=False)

变量“Categories”是一个字符串元组 - 您正在尝试使用字符串“i”作为变量,例如:

"Blood" = Overview.loc[(Overview['Category']=="Blood")

这行不通。

您尝试过使用自由变量名吗?

for cat in Categories:
    test = Overview.loc[(Overview['Category']==cat)]
    test.to_excel(writer, sheet_name=cat, startrow=over_row, startcol=over_col, header=False, index=False)