我想在表中显示2分组依据的单个值聚合的结果。
这样的
df.groupby(['colA', 'colB']).size
Run Code Online (Sandbox Code Playgroud)
将产生:
B1 B2 B3 B4
A1 s11 s12 s13 ..
A2 s21 s22 s23 ..
A3 s31 s32 s33 ..
A4 .. .. .. s44
Run Code Online (Sandbox Code Playgroud)
快速简便的方法是什么?
编辑:这是一个例子。我拥有所有用户的登录名,并且我想显示每个用户和一天的登录数(=行)
Day,User
1,John
1,John
1,Ben
1,Sarah
2,Ben
2,Sarah
2,Sarah
Run Code Online (Sandbox Code Playgroud)
应该产生:
D\U John Ben Sarah
1 2 1 1
2 0 1 2
Run Code Online (Sandbox Code Playgroud)
使用:
df.groupby(['colA', 'colB']).size().unstack()
Run Code Online (Sandbox Code Playgroud)
例:
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
Run Code Online (Sandbox Code Playgroud)
现在:
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
Run Code Online (Sandbox Code Playgroud)
现在更新您的帖子中包含数据:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1445 次 |
| 最近记录: |