问题描述
我有一个数据框,详细说明了商店位置和收入信息。我想迭代此信息,但按位置和机器号将其分解,然后将此信息导出到excel。我当前的数据框看起来像这样
Location Machine Number Net Funds Net Revenue
0 Location 1 123456 123 76
1 Location 1 325462 869 522
2 Location 1 569183 896 234
3 Location 2 129756 535 542
4 Location 2 234515 986 516
5 Location 2 097019 236 512
6 Location 3 129865 976 251
理想情况下,输出看起来像这样
Machine Number Net Funds Net Revenue
Location 1
123456 123 76
325462 869 522
269183 896 234
Machine Number Net Funds Net Revenue
Location 2
129756 535 542
234515 986 516
097019 236 512
Machine Number Net Funds Net Revenue
Location 3
129865 976 251
虽然我能够将这些数据迭代为我喜欢的格式
for name,group in grouped:
print(name)
print(group)
我无法将其称为xlsxwriter。
任何指导将不胜感激。
解决方法
为此,您可以使用 to_csv 创建一个csv字符串,然后调整列标题。您可以在Excel中打开CSV文件。
尝试以下代码:
import pandas as pd
cols = ['Location','Machine Number','Net Funds','Net Revenue']
lst = [
['Location 1','123456',123,76],['Location 1','325462',869,522],'569183',896,234],['Location 2','129756',535,542],'234515',986,516],'097019',236,512],['Location 3','129865',976,251]]
df = pd.DataFrame(lst,columns=cols)
loclst = df['Location'].unique().tolist()
cc = ""
for loc in loclst:
dfl = df[df['Location']==loc][cols[1:]]
cc += ','.join(cols[1:]) + '\n' + loc+',\n' + dfl.to_csv(index=False,header=False)
print(cc)
with open('out.csv','w') as f:
f.write(cc.replace('\r\n','\n'))
输出(out.csv)
Machine Number,Net Funds,Net Revenue
Location 1,123456,76
325462,522
569183,234
Machine Number,Net Revenue
Location 2,129756,542
234515,516
097019,512
Machine Number,Net Revenue
Location 3,129865,251