Pandas:为另一列的每个值统一一列的值

2024-04-18 18:28:20 发布

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

我有一个数据帧,看起来像这样:

    user_id category frequency
0   user1   cat1    4
1   user2   cat2    1
2   user2   cat3    4
3   user3   cat3    1
4   user3   cat4    3

对于每个用户,我都将类别与其频率相关联。 总共有4个类别(cat1、cat2、cat3、cat4),我想通过添加频率等于零的缺失类别来扩展每个用户的数据。在

因此,预期结果是:

^{pr2}$

所以现在每个用户都有4个相关的类别。有没有什么直截了当的解决办法来实现这个目标?在


Tags: 数据用户id类别频率frequencycategoryuser
1条回答
网友
1楼 · 发布于 2024-04-18 18:28:20

您可以在user_idcategory上创建一个透视表,用零填充nan值,堆栈{}(这将使数据帧在user_idcategory上建立索引),然后重置索引以匹配所需的输出。在

>>> (df.pivot(index='user_id', columns='category', values='frequency')
     .fillna(0)
     .stack()
     .reset_index()

   user_id category  0
0    user1     cat1  4
1    user1     cat2  0
2    user1     cat3  0
3    user1     cat4  0
4    user2     cat1  0
5    user2     cat2  1
6    user2     cat3  4
7    user2     cat4  0
8    user3     cat1  0
9    user3     cat2  0
10   user3     cat3  1
11   user3     cat4  3

相关问题 更多 >