2016-08-28 6 views
2

私はこれを書く良い方法をお探しです。これは私のサンプルデータセットでうまく動作しますが、大きなデータセットではかなり遅くなります。お客様の購入番号dataframeから始まります。私は形式でリストのリストを取得したいのです: `` [注文のお客様、平均注文の、カウント] `Pandas groupbyは集計された2つの関数を取得し、リストのリストに変換します

import pandas as pd 

df = pd.DataFrame(data = [['Customer0', 10], ['Customer0', 12], ['Customer1', 23]], 
        columns=['Customer', 'Orders']) 

grouped = df.groupby(['Customer']).mean() 
grouped['count'] = df.groupby(['Customer']).count() 

values = grouped.values.tolist() 
indexes = grouped.index.tolist() 

for x in range(0,len(values)): 
    values[x].insert(0, indexes[x]) 

print values 

出力:

[['Customer0', 11, 2], ['Customer0', 23, 1]] 

答えて

2

あなたはこれを試してみてくださいことはできますか?

df.groupby('Customer').agg(['mean', 'count']).reset_index().values.tolist() 
Out: [['Customer0', 11, 2], ['Customer1', 23, 1]] 

小さなノート:私たちはここでループしていないので、グループの数(len(values))がかなり大きい場合にのみ、大幅にあなたのコードを向上させることができます。グループの数が少ない場合は、最大でも2倍の向上が見込まれます。

+0

これは少し高速ですが、コードははるかにクリーンです。ありがとう。 – user2242044

関連する問題