【问题标题】:Create an Excel file with multiple sheets with Python/Pandas使用 Python/Pandas 创建包含多张工作表的 Excel 文件
【发布时间】:2020-04-23 18:23:56
【问题描述】:

我有一个大数据集 (df)(8M 行,50 列)。我正在尝试构建一个 for 循环来创建一个 excel 文件,其中每个工作表都包含数据集每一列的 value_counts()。

(即在 worksheet('Sheet1') 我写 df.columns[0].value_counts() 和在 worksheet('Sheet2') 我写 df.columns[1].value_counts() 等等)。

这是我尝试过的:

for i in range(3,6):   # I am using a small range to test the loop
    z = df1[df1.columns[i]].value_counts()
    z = z.to_frame().reset_index()
    title = str(i)
    with pd.ExcelWriter('Pivot part1.xlsx') as writer:  
        z.to_excel(writer, sheet_name=title)

这会一直覆盖文件,因此我最终得到了一个只有一张纸的 Excel 文件,而不是一个有 4 张纸的 Excel 文件。

我希望我设法清楚地解释了这个问题,如果这个问题是重复的,我深表歉意,但我找不到合适的答案,或者至少找不到一个我能理解的答案。

【问题讨论】:

    标签: python excel pandas


    【解决方案1】:

    重新排列,以便您只打开一次 excel writer 对象:

    with pd.ExcelWriter('Pivot part1.xlsx') as writer:  
        for i in range(3,6):
            z = df1[df1.columns[i]].value_counts()
            z = z.to_frame().reset_index()
            title = str(i)
            z.to_excel(writer, sheet_name=title)
    

    【讨论】:

      【解决方案2】:

      您创建了一次编写器对象,它应该可以正常工作。

      writer = pd.ExcelWriter('Pivot part1.xlsx', engine='xlsxwriter')
      for i in range(3,6):   # I am using a small range to test the loop
          z = df1[df1.columns[i]].value_counts()
          z = z.to_frame().reset_index()
          title = str(i)
          z.to_excel(writer, sheet_name=title)
      writer.save()
      

      【讨论】:

        猜你喜欢
        • 2020-07-17
        • 1970-01-01
        • 1970-01-01
        • 2011-12-30
        • 1970-01-01
        • 2020-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多