Python 熊猫:为另一列的每个值统一一列的值
我有一个如下所示的数据帧:Python 熊猫:为另一列的每个值统一一列的值,python,pandas,Python,Pandas,我有一个如下所示的数据帧: 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),我想通过添加缺失的类别(频率等于零)来扩展每个用户的数据 因此,预期结果是: u
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个相关类别。有什么简单的解决方案可以实现这一点吗?您可以在
用户id
和类别
上创建数据透视表,用零填充nan
值,堆栈类别
(这使得数据帧在用户id
和类别
上建立索引),然后重置索引以匹配所需的输出
>>> (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