【问题标题】:Pandas - Write multiple dataframes to single excel sheetPandas - 将多个数据框写入单个 Excel 工作表
【发布时间】:2019-07-03 03:10:44
【问题描述】:

我有一个包含 45 列和 1000 行的数据框。我的要求是创建一个 Excel 表,其中包含每列的前 2 个值及其百分比(假设 col 1 的值 'python' 出现 500 次,百分比应为 50)

我用过:

    writer = pd.ExcelWriter('abc.xlsx')
    df = pd.read_sql('select * from table limit 1000', <db connection sring>)
    column_list = df.columns.tolist()
    df.fillna("NULL", inplace = True)
    for obj in column_list:
        df1 = pd.DataFrame(df[obj].value_counts().nlargest(2)).to_excel(writer,sheet_name=obj
writer.save()

这会将输出写入同一文档的不同 Excel 选项卡中。我需要将它们按以下格式放在一张纸上:

Column Name          Value         Percentage
col1                 abc           50
col1                 def           30
col2                 123           40
col2                 456           30

....

让我知道任何其他功能以获取此输出。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    让我想到的第一件事是您每次都在更改工作表名称,通过说sheet_name=obj 如果您摆脱它,仅此一项可能会解决您的问题。

    如果没有,我建议将结果连接到一个大的 DataFrame 中,然后将该 DataFrame 写入 Excel。

    for obj in column_list:
        df = pd.DataFrame(df[obj].value_counts().nlargest(2))
        if df_master is None:
            df_master = df
        else:
            df_master = pd.concat([df_master,df])
    df_master.to_excel("abc.xlsx")
    

    这里有更多关于在 Pandas 中堆叠/连接数据框的信息 https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html

    【讨论】:

    • 谢谢@user2993886 这有效。我必须在循环之前将 df_master 初始化为空数据帧。我还建议在进行 concat 时给出 sort = True 。它将保留excel中循环的顺序....
    猜你喜欢
    • 2019-08-23
    • 2016-12-03
    • 2013-11-29
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 2016-01-02
    • 2021-09-06
    • 1970-01-01
    相关资源
    最近更新 更多