パンダのデータフレームをカウントして、特定の列でグループ化しました。
import pandas as pd
df = pd.DataFrame({'x':list('aaabbbbbccccc'),'y':list('2225555577777'), 'z':list('1312223224432')})
#
df.groupby(['x','y','z'])['z'].count()
# or
df.groupby(['x','y','z'])['z'].agg(['count'])
# or
df.groupby(['x','y','z'])['z'].count().reset_index(name='counts')
結果は;
x y z counts
0 a 2 1 2
1 a 2 3 1
2 b 5 2 4
3 b 5 3 1
4 c 7 2 2
5 c 7 3 1
6 c 7 4 2
結果を次の形式に変換するにはどうすればよいですか?
x y 1 2 3 4
0 a 2 2 0 1 0
1 b 5 0 4 1 0
2 c 7 0 2 1 2
unstack
+を使用する必要がありますreset_index
:
(df.groupby(['x','y','z'])['z']
.count()
.unstack(-1, fill_value=0)
.reset_index()
.rename_axis(None, axis=1)
)
x y 1 2 3 4
0 a 2 2 0 1 0
1 b 5 0 4 1 0
2 c 7 0 2 1 2
コンパクトにするためにdf.groupby(['x','y','z'])['z'].count()
と置き換えることができますがdf.groupby(['x','y','z']).size()
、size
NaNもカウントされることに注意してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加