熊猫聚合多列的值

时间:2019-03-19 00:41:33

标签: python pandas

这是我的DataFrame的示例

  user    workflow    device     location  date 
  A         top         Mac      SF        1/1/19
  B         left        Win      SA        1/1/19
  A         right       Mac      SF        1/5/19
  C         left        iphone   LA        1/7/19
  D         left        pixel    BO        1/20/19
  C         bottom      iphone   LA        1/21/19

我想将DF转换成这样:

 User top bottom left right Mac Win iphone pixel SF  SA   LA  BO
 A     1   0     0      1   1   0     0     0     2   0   0    0
 B     0   0     1      0   0   1     0     0     0   1   0    0
 C     0   1     1      0   0   0     2     0     0   0   2    0
 D     0   0     1      0   0   0     0     1     0   0   0    1

使用熊猫如何做到这一点?

1 个答案:

答案 0 :(得分:1)

str.get_dummies之后使用stack

s=df.set_index('user').stack().str.get_dummies().sum(level=0)
s  
      BO  LA  Mac  SA  SF  Win  bottom  iphone  left  pixel  right  top
user                                                                   
A      0   0    2   0   2    0       0       0     0      0      1    1
B      0   0    0   1   0    1       0       0     1      0      0    0
C      0   2    0   0   0    0       1       2     1      0      0    0
D      1   0    0   0   0    0       0       0     1      1      0    0