我有一个如下的数据框:
user = pd.DataFrame({'User':['101','101','101','102','102','101','101','102','102','102'],'Country':['India','Japan','India','Brazil','Japan','UK','Austria','Japan','Singapore','UK'],'Count':[50,1,2,5,6,89,10.9,10,5,6]})
我想要的结果是使用循环从上面的数据框中为每个“用户”在一个 Excel 工作簿中创建多个 Excel 工作表。例如:
用户 101 将位于名为“101”的工作表中,而用户 102 将位于同一工作簿内名为“102”的工作表中。
我尝试使用下面的代码循环,但它只循环第一个用户 101。
for user in user['User'].unique():
path = r"C:\Users\Desktop\df_user.xlsx"
writer = pd.ExcelWriter(path, engine = 'xlsxwriter')
user[user['User'] == user].to_excel(writer, sheet_name = f"{user}")
writer.save()
writer.close()
按groupby
对象循环并保存到相同的 excel 文件:
with pd.ExcelWriter('output.xlsx') as writer:
for i, g in user.groupby('User'):
g.to_excel(writer, sheet_name=i, index=False)
如果有必要删除列User
:
with pd.ExcelWriter('output.xlsx') as writer:
for i, g in user.groupby('User'):
g.drop('User', axis=1).to_excel(writer, sheet_name=i, index=False)
在您的解决方案中,有必要更改for user in user['User'].unique()
以for u in user['User'].unique()
避免覆盖 DataFrame 变量user
,还定义writer
更好的循环外以避免覆盖 excel 文件:
path = "df_user.xlsx"
writer = pd.ExcelWriter(path, engine = 'xlsxwriter')
for u in user['User'].unique():
user[user['User'] == u].to_excel(writer, sheet_name = f"{u}", index=False)
writer.save()
writer.close()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句