我想将2个分组的单个值聚合的结果显示在表中。
这样
df.groupby(['colA', 'colB']).size
会屈服:
B1 B2 B3 B4
A1 s11 s12 s13 ..
A2 s21 s22 s23 ..
A3 s31 s32 s33 ..
A4 .. .. .. s44
这是一种快速简便的方法吗?
编辑:这是一个例子。我有所有用户的登录信息,我想显示每个用户和日的登录次数(=行数)Day,User
1,John
1,John
1,Ben
1,Sarah
2,Ben
2,Sarah
2,Sarah
应该屈服:
D\U John Ben Sarah
1 2 1 1
2 0 1 2
答案 0 :(得分:5)
使用:
df.groupby(['colA', 'colB']).size().unstack()
示例:
df = pd.DataFrame(np.transpose([np.random.choice(['B1','B2','B3'], size=10),
np.random.choice(['A1','A2','A3'], size=10)]),
columns=['A','B'])
df
A B
0 B3 A1
1 B1 A2
2 B3 A3
3 B1 A3
4 B2 A2
5 B3 A3
6 B3 A1
7 B2 A1
8 B1 A3
9 B3 A3
现在:
df.groupby(['A','B']).size().unstack()
B A1 A2 A3
A
B1 NaN 1.0 2.0
B2 1.0 1.0 NaN
B3 2.0 NaN 3.0
现在更新你的帖子有数据:
df.groupby(['Day','User']).size().unstack().fillna(0)
User Ben John Sarah
Day
1 1.0 2.0 1.0
2 1.0 0.0 2.0