使用 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)
我正在尝试在 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)