通过pandas dataframe作为2D数组打印双组

时间:2016-11-18 17:50:05

标签: python pandas

我想将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

1 个答案:

答案 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