[英]Pandas - Write multiple dataframes to single excel sheet
I have a dataframe with 45 columns and 1000 rows. 我有一个包含45列和1000行的数据框。 My requirement is to create a single excel sheet with the top 2 values of each column and their percentages (suppose col 1 has the value 'python' present 500 times in it, the percentage should be 50)
我的要求是使用每列的前2个值及其百分比创建一个excel工作表(假设col 1的值“ python”在其中存在500次,百分比应为50)
I used: 我用了:
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()
This writes the output in separate excel tabs of the same document. 这会将输出写在同一文档的单独的excel选项卡中。 I need them in a single sheet in the below format:
我需要它们以以下格式放在一张纸上:
Column Name Value Percentage
col1 abc 50
col1 def 30
col2 123 40
col2 456 30
.... ....
Let me know any other functions as well to get to this output. 让我知道任何其他函数也可以到达此输出。
The first thing that jumps out to me is that you are changing the sheet name each time, by saying sheet_name=obj
If you get rid of that, that alone might fix your problem. 让我
sheet_name=obj
的第一件事是,您每次都通过说sheet_name=obj
来更改工作表名称。如果您摆脱了这一点,那么仅此一项就可以解决您的问题。
If not, I would suggest concatenating the results into one large DataFrame and then writing that DataFrame to Excel. 如果没有,我建议将结果串联到一个大的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")
Here's more information on stacking/concatenating dataframes in Pandas https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html 这是有关在Pandas中堆叠/连接数据帧的更多信息https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.