【问题标题】:Save Dictionary of Multiple Series to Excel将多个系列的字典保存到 Excel
【发布时间】:2017-10-26 04:35:01
【问题描述】:

我有一个包含 101 列的数据框,我想查看我的数据框中每个变量的分布。使用 Pandas value_counts,我创建了一个包含多个长度的系列的字典。每个系列都有自己的钥匙。

首先我会这样做:

    out={}
    for c in df.columns:
    out[c]=df[c].value_counts(dropna=False).fillna(0) 

所以,out 是一个大小为 101 的字典。out 内是一个具有各种大小的系列列表。

Key     |  Type  | Size |  Value
Key1      Series   (12,)   class 'pandas.core.series.Series'
Key2      Series   (7,)    class 'pandas.core.series.Series'
Key3      Series   (24,)   class 'pandas.core.series.Series'
.
.
.
Key101

每个键都是唯一的。我想将这些系列中的每一个保存到 Excel 文件中。这个answer 是关闭的,将适用于循环中的第一个键,但它不会继续到字典中的下一个键。这就是我现在拥有的:

for key in out.keys():
    s=out[key]
    name=key[:30]
    s.to_excel('xlfile.xlsx', sheet_name=name)

我只保留前 30 个字符,因为这是 Excel 中工作表名称的限制。我不需要他们有自己的工作表,我希望它们都被逐列保存到一个工作表中,但这是我能得到的最接近保存它们的方法。显然是一个新手,所以如果我的基本问题有更好的方法,那也很棒。

我愿意接受任何建议,感谢您的宝贵时间。

【问题讨论】:

    标签: python excel pandas dictionary


    【解决方案1】:

    需要ExcelWriter:

    writer = pd.ExcelWriter('xlfile.xlsx')
    for key in out.keys():
        out[key].to_excel(writer, sheet_name=key[:30])
    writer.save()
    

    或者如果没有必要创建dict,将它写在第一个循环中(同样的好处是sheet names的顺序与columnscolumns的顺序相同):

    writer = pd.ExcelWriter('xlfile.xlsx')
    for c in df.columns:
        df[c].value_counts(dropna=False).fillna(0).to_excel(writer, sheet_name=c[:30])
    writer.save()
    

    【讨论】:

      【解决方案2】:

      您需要创建一个 excel 编写器并将其传递到循环中,即

      >>> writer = pd.ExcelWriter('output.xlsx')
      >>> df1.to_excel(writer,'Sheet1')
      >>> df2.to_excel(writer,'Sheet2')
      >>> writer.save()
      

      更多信息请参考here

      【讨论】:

        猜你喜欢
        • 2016-12-01
        • 2021-12-10
        • 2020-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多