店舗の場所と収益に関する詳細情報を記述したデータフレームがあります。この情報を繰り返し、場所とマシン番号ごとに分類して、この情報を 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 に呼び出すことができません。
ご指導いただければ幸いです。
Excel の結果は単一の s 上にある必要があります。ヒーツ?列ヘッダーが繰り返されていますか?
– マイク67
2020 年 9 月 4 日 19:14
ご返信ありがとうございます。はい、理想的には、ヘッダーが繰り返される 1 つのシートに収まります。
– サードーグ
2020 年 9 月 8 日 12:21
------------------------
このために、to_csv を使用して CSV 文字列を作成し、列ヘッダーを調整します。 CSV ファイルは Excel で開くことができます。
このコードを試してください:
import pandas as pd
cols = ['Location','Machine Number','Net Funds','Net Revenue']
lst = [
['Location 1','123456',123, 76],
['Location 1','325462',869,522],
['Location 1','569183',896,234],
['Location 2','129756',535,542],
['Location 2','234515',986,516],
['Location 2','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,123,76
325462,869,522
569183,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