2016-10-27 20 views
3

タイトルとして、複数のスプレッドシートをPandasのExcelファイルに作成する必要があります。 this threadthis one のすべての解決策がありましたが、私の状況は少し異なると思いました。Python Pandasで複数のスプレッドシートを作成するPandas

writer = pd.ExcelWriter('output.xlsx') 
DF1.to_excel(writer,'Sheet1') 
DF2.to_excel(writer,'Sheet2') 
writer.save() 

しかし、問題は、私はそれらのそれぞれがちょうど大きすぎるので、同時に私の記憶では、複数のデータフレームを維持する余裕がないということである。例は両方ともに似たものを使用します。私は計算のいくつかの並べ替えを行い、最終的にc通じたときにdata['A'] == a別のスプレッドシートを生成するgrplistの項目['a', 'b', 'c']を使用する予定 df = pd.DataFrame(dict(A=list('aabb'), B=range(4), C=range(6,10)))
Out: A B C 0 a 0 6 1 a 1 7 2 b 2 8 3 b 3 9

:私のデータは、この複雑なバージョンであることができる

data = pd.read_csv(fileloc) 
grplist = [['a','b','c'],['d','e','f']] 
for groups, numbers in zip(grplist, range(1, 5)): 
    for category in groups: 
     clean = data[(data['A'] == category) & (data['B'] == numbers)]['C'] 
     # --------My calculation to generate a dataframe-------- 
     my_result_df = pd.DataFrame(my_result) 
     writer = ExcelWriter('my_path_of_excel') 
     my_resultdf.to_excel(writer, 'Group%s_%s' % (numbers, category[:4])) 
     writer.save() 
     gc.collect() 

悲しいことに、groups, numbersがループスルーされているので、私のコードは複数のスプレッドシートを作成しません。私は1つのスプレッドシートで最後の結果しか得られません。私に何ができる?

これは私の最初の投稿です。私はすべてのルールに従っているので、このスレッドがうまく終わることができれば幸いです。何かを修正または改善する必要がある場合は、私に知らせてください。ご協力いただきありがとうございます:)

答えて

0

は、グループや印刷

for name, group in df.groupby('A'): 
    print('{}\n\n{}\n\n'.format(name, group)) 

a 

    A B 
0 a 0 
1 a 1 


b 

    A B 
2 b 2 
3 b 3 

to_excel

通じ df

df = pd.DataFrame(dict(A=list('aabb'), B=range(4))) 

ループを考えます

+0

[タグ:piRSquared]ありがとうございました。しかし、これは私の問題を解決しません。自分のデータとコードを記述するために、さらにいくつかの行を追加しました。私が尋ねる究極の質問は、「.groupby()」を使って複数のスプレッドシートをグループ化するのではなく、複数のスプレッドシートを一度に1つ作成する方法です。私があなたを正しく理解していない場合は、私に知らせてください。 –

関連する問題