Pandas:统一另一列

时间:2015-10-18 22:26:58

标签: python pandas

我有一个如下所示的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个相关类别。是否有任何直接的解决方案来实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以在user_idcategory上创建数据透视表,将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