我有一个如下所示的 DataFrame:
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),我想通过添加频率为零的缺失类别来扩展每个用户的数据。
所以预期的结果是:
user_id category frequency
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
现在每个用户都拥有所有 4 个相关类别。有没有任何直接的解决方案可以实现这一目标?
最佳答案
您可以在user_id
和category
上创建数据透视表,用零填充nan
值,堆叠category
(这使得数据帧在 user_id
和 category
上建立索引),然后重置索引以匹配所需的输出。
>>> (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
关于python - Pandas:将一列的值统一为另一列的每个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33203943/