「名前」列の一意の文字列に基づいて個々のファイルに解析したいデータフレームがあります。次のような単純な関数でこれを行うことができます。
f= lambda x: x.to_excel(os.getcwd()+'\\{}.xlsx'.format(x.name), index= False)
df.groupby('names').apply(f)
これらのファイルを条件付き書式で書き出すことに注意してください。次のブロックで ExcelWriter を使用して、目的の書式設定を実現できました。
writer= pd.ExcelWriter('Test.xlsx', engine='xlsxwriter' )
df.to_excel(writer, sheet_name='Sheet1', index=False)
workbook= writer.book
worksheet= writer.sheets['Sheet1']
format1= workbook.add_format({'font_color':'#ec5a24'})
format2= workbook.add_format({'bg_color':'#4b4b4b','font_color':'#ffde00'})
format3= workbook.add_format({'font_color':'#86b05b'})
worksheet.conditional_format('A2:AM10000',{'type':'formula','criteria':'=INDIRECT("E"&ROW())= "High"', 'format':format1})
worksheet.conditional_format('A2:AM10000',{'type':'formula','criteria':'=INDIRECT("E"&ROW())= "Med"', 'format':format2})
worksheet.conditional_format('A2:AM10000',{'type':'formula','criteria':'=INDIRECT("E"&ROW())= "Normal"', 'format':format3})
workbook.close()
writer.save()
これら 2 つを組み合わせて、出力が Excel ファイルに必要な条件付き書式を持つ多くのファイル (列名の一意の名前ごとに 1 つ) になるようにする方法はありますか?
リクエストごとの新しいコード:
def new_func():
f= lambda x: x.to_excel(os.getcwd()+'\\{}.xlsx'.format(x.name), index= False)
writer= pd.ExcelWriter(x.name, engine='xlsxwriter' )
df.to_excel(writer, sheet_name='Sheet1', index=False)
workbook= writer.book
worksheet= writer.sheets['Sheet1']
format1= workbook.add_format({'font_color':'#ec5a24'})
format2= workbook.add_format({'bg_color':'#4b4b4b','font_color':'#ffde00'})
format3= workbook.add_format({'font_color':'#86b05b'})
worksheet.conditional_format('A2:AM10000',{'type':'formula','criteria':'=INDIRECT("E"&ROW())= "High"', 'format':format1})
worksheet.conditional_format('A2:AM10000',{'type':'formula','criteria':'=INDIRECT("E"&ROW())= "Med"', 'format':format2})
worksheet.conditional_format('A2:AM10000',{'type':'formula','criteria':'=INDIRECT("E"&ROW())= "Low"', 'format':format3})
workbook.close()
writer.save()
df.groupby('names').apply(new_func())