2017-11-30 7 views
1

は、私は、次のコードを実行している:私は、複数年にわたり、月によって名前のカウントに集約しています集計の出力を複数の列で制御するPython?

monthly_data = df.groupby(['year','month','name']).agg({'name':'count'}) 

。現在の出力は、

year month game count(name) 
.... 
.... 
.... 

の形式です。出力の最初の3つの値はインデックスです。私が望むのは、列としての名前と行の名前のデータフレームを返すことです。列の値として各年と月の組み合わせを、列の値としてcount(名前)を使用して、時間の経過とともに名前の数の時系列をプロットすることができます。これどうやってするの?

編集:データがフォーム

year month name 
2012 1  annie 
2012 1  annie 
2012 2  david 
2012 2  david 
2012 2  david 

である私は

year month name count(name) 
2012 1  annie 2 
2012 2  david 3 

私はそれがアイデアを形

name 2012-1 2012-2 
annie 2  0 
david 0  3 

であることを出力したいと思っていないの集約私は行と水平線図を作成することができるだろう

+0

実際のデータの一部を表示してください。 –

答えて

1

は、これはあなたが書いた正確に出力を与えるものではありませんが、あなたはあなたの列ラベル用miltiindexで大丈夫ならあなたはそれが正確にあなたのポストに見えるようにしたい場合は、

df2 = pd.pivot_table(df, columns = ['year', 'date'], index = 'name', aggfunc = len) 

を行うことができます:

df['date'] = df.apply(lambda row: (row['year'])+'-'+str(row['month']), axis = 1) 
df2 = pd.pivot_table(df, columns = ['date'], index = 'name', aggfunc = len).reset_index() 
関連する問題