Pandas:计算值的频率并转换为列

2024-05-01 21:47:36 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,我有这样一个数据帧:

     id    0     1     2     3     4     5
0    1     a     b    null   c    null  null
1    2    null   a    null   d     e    null
2    3     d    null   c    null   a    null
3    4    null  null   d    null   b     e     
4    5     c     a     e     b    null   b

我想得到一个数据帧,比如:

     id    null     a     b     c     d     e
0    1       3      1     1     1     0     0
1    2       3      1     0     0     1     1
2    3       3      1     0     1     1     0
3    4       3      0     1     0     1     1     
4    5       1      1     2     1     0     1

怎么做?谢谢!你知道吗

编辑: 我试过了 aoi_data = pd.get_dummies(aoi.set_index('userId').stack()).sum(level=0)

就这样!你知道吗


Tags: 数据id编辑datagetindexstacklevel
1条回答
网友
1楼 · 发布于 2024-05-01 21:47:36

你需要get_dummies

df.fillna('null').set_index('id').stack().str.get_dummies().sum(level=0)
Out[637]: 
    a  b  c  d  e  null
id                     
1   1  1  1  0  0     3
2   1  0  0  1  1     3
3   1  0  1  1  0     3
4   0  1  0  1  1     3
5   1  2  1  0  1     1

相关问题 更多 >