我有一个包含 45 列和 1000 行的数据框。我的要求是创建一个单独的 Excel 工作表,其中包含每列的前 2 个值及其百分比(假设第 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=objwriter.save()这会将输出写入同一文档的单独 excel 选项卡中。我需要它们在以下格式的单个工作表中:Column Name Value Percentagecol1 abc 50col1 def 30col2 123 40col2 456 30....让我知道任何其他功能以及获得此输出。
1 回答
MM们
TA贡献1886条经验 获得超2个赞
跳出来的第一件事是,您每次都在更改工作表名称,说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
添加回答
举报
0/150
提交
取消
