をGROUPBYに列を追加します。パンダは、私はこの単純なデータフレーム<code>df</code>持つデータフレーム
df = pd.DataFrame({'c':[1,1,1,2,2,2,2],'type':['m','n','o','m','m','n','n']})
を私の目標は、各c
ためtype
の値をカウントし、その後c
のサイズでカラムを追加することです。だから始まる:
In [27]: g = df.groupby('c')['type'].value_counts().reset_index(name='t')
In [28]: g
Out[28]:
c type t
0 1 m 1
1 1 n 1
2 1 o 1
3 2 m 2
4 2 n 2
最初の問題は解決されます。そして、私はまた、次のことができます。
In [29]: a = df.groupby('c').size().reset_index(name='size')
In [30]: a
Out[30]:
c size
0 1 3
1 2 4
どのように私は、最初のデータフレームに直接size
列を追加することができますか?動作しますが、これを行うために、より簡単な方法がある
In [31]: a.index = a['c']
In [32]: g['size'] = g['c'].map(a['size'])
In [33]: g
Out[33]:
c type t size
0 1 m 1 3
1 1 n 1 3
2 1 o 1 3
3 2 m 2 4
4 2 n 2 4
:これまでのところ私はmap
を使用しましたか?
私はもっと簡単なことがあると知っていました...ありがとう! –
実際、この場合、 'value_counts()'を保持したいので、 'g ['size'] = g.groupby( 'c')['t']。 。 –
これは、https://stackoverflow.com/questions/30244952/python-pandas-create-new-column-with-groupby-sumよりもはるかに良い答えです。 – vagabond