熊猫-将多个数据框写入单个Excel工作表

时间:2019-02-08 20:35:06

标签: python pandas dataframe

我有一个45列和1000行的数据框。我的要求是使用每个列的前2个值及其百分比创建一个excel工作表(假设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

....

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

1 个答案:

答案 0 :(得分: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