Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python xlsxwriter引擎下的条件格式_Python_Pandas_Export To Excel_Xlsxwriter - Fatal编程技术网

Python xlsxwriter引擎下的条件格式

Python xlsxwriter引擎下的条件格式,python,pandas,export-to-excel,xlsxwriter,Python,Pandas,Export To Excel,Xlsxwriter,数据框列“index_val”中有六个不同的值,我已将它们导入到同一工作簿的每个新工作表中 df_dict = {} for zone in df['index_val'].unique(): zone_df = df[df['index_val'] == zone] df_dict[zone] = zone_df def save_xlsx(df_dict, path): with pd.ExcelWriter(path) a

数据框列“index_val”中有六个不同的值,我已将它们导入到同一工作簿的每个新工作表中

df_dict = {}

    for zone in df['index_val'].unique():
        zone_df = df[df['index_val'] == zone]
        df_dict[zone] = zone_df

    def save_xlsx(df_dict, path):
        with pd.ExcelWriter(path) as writer:
            for key in df_dict:
                df_dict[key].to_excel(writer, key, index=False)
            writer.save()

    save_xlsx(df_dict, 'report.xlsx')
Excel工作表中生成的输出尚未格式化为适合列宽。例如,第1列中的值要求列宽为92,而第B列中的值要求列宽为16。我尝试使用
set\u column
方法,但由于工作表名称存储为字典,因此返回了一个错误

这些数据的夹头如下所示:

name_char   index_val  count    
name1       A          36
name2       A          38
name3       B          76
name4       C          12
name3       C          25
name6       F          42

将有6个工作表,每个工作表都有来自index_val的名称。每个工作表都有第一列name_char,第二列作为唯一index_val。我想要的是将第一列宽度设置为92,第二列设置为16。或者,是否有根据最大列值自动设置每列宽度的过程?

您可以执行以下操作:

df_dict={}
对于df['index_val']中的区域。唯一()
区域_df=df[df['index_val']==zone]
df_dict[区域]=区域
def save_xlsx(df_dict,路径):
使用pd.ExcelWriter(路径)作为写入程序:
对于df_dict中的键:
df_dict[key]。到excel(writer,key,index=False)
工作簿=writer.book
工作表=编写器。工作表[键]
工作表.集合列(1,1,92)
工作表.集合列(2,2,16)
writer.save()
保存(df_dict,'report.xlsx')

set\u列支持0索引,因此我必须将参数更新到
工作表。set\u列(0,0,92)
工作表。set\u列(1,1,16)