1

我正在尝试创建 3 个不同的数据框,以在名为df, df_OK, df_KO. 但是,下面的代码仅输出 df 并且没有创建其他 2 个数据框df_OK, df_KO以在同一个 Excel 文件中,而是在 2 个单独的工作表中。

有什么建议么?谢谢

class blah:
    def __init__(self, path, file_in, file_out):
        self.path = path
        self.file_in = file_in
        self.file_out = file_out
        
    def process_file(self):
        df = pd.read_excel(self.path + self.file_in)
        df_OK = df.loc[df['Status'] == 'OK']
        df_KO = df.loc[df['Status'] == 'KO']
        df_OK.loc['Total'] = df_OK[['Price']].sum(axis=0)

        writer = pd.ExcelWriter(self.path + self.file_out, engine='xlsxwriter')
        
        dfs = {
            'All': df, 
            'OK': df_OK, 
            'KO': df_KO
            }      
         
        for sheet_name in dfs.keys():
            dfs[sheet_name].to_excel(writer, sheet_name=sheet_name, index=False)
            writer.save()
            
b = blah('C:/Users/......./',
         'path...',
         'file_in....', 
         'file_out...')
        
b.process_file() 
4

1 回答 1

1

这是因为您在循环的每次迭代中都覆盖了同一个 Excel 文件for sheet_name in dfs.keys()。所以每次你写一个只有一张表的Excel文件到相同的文件名,从而覆盖以前的文件。

您应该writer.save()像这样移动循环外部:

for sheet_name in dfs.keys():
    dfs[sheet_name].to_excel(writer, sheet_name=sheet_name, index=False)
writer.save()
于 2020-10-02T10:13:40.677 回答