2017-08-08 8 views
1

「年」、「月」、「トランザクションID」という列のパンダデータフレームがあります。私は毎年毎月のトランザクション数を取得したい。私のデータは次のようなものです:パンダのデータフレームにgroupbyを2回適用するにはどうすればいいですか?

year: {2015,2015,2015,2016,2016,2017} 
month: {1, 1, 2, 2, 2, 1} 
tid: {123, 343, 453, 675, 786, 332} 

毎年、毎月のトランザクション数を取得するような出力を得たいと思います。 2015年の場合、私は出力を得るでしょう:

month: [1,2] 
count: [2,1] 

私はgroupby( 'year')を使用しました。それ以降は、1か月あたりのトランザクション数をどのように得ることができます。

答えて

1

あなたは、両方の列によってgroupby必要 - yearmonthをしてからsizeを集約:

year = [2015,2015,2015,2016,2016,2017] 
month = [1, 1, 2, 2, 2, 1] 
tid = [123, 343, 453, 675, 786, 332] 

df = pd.DataFrame({'year':year, 'month':month,'tid':tid}) 
print (df) 
    month tid year 
0  1 123 2015 
1  1 343 2015 
2  2 453 2015 
3  2 675 2016 
4  2 786 2016 
5  1 332 2017 

df1 = df.groupby(['year','month'])['tid'].size().reset_index(name='count') 
print (df1) 
    year month count 
0 2015  1  2 
1 2015  2  1 
2 2016  2  2 
3 2017  1  1 
関連する問題