【问题标题】:Pandas: unify the values of a column for each value of another columnPandas:为另一列的每个值统一一列的值
【发布时间】:2016-01-17 04:21:57
【问题描述】:

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

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以在user_idcategory 上创建一个数据透视表,用零填充nan 值,堆叠category(这使得数据帧在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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-05
      • 2022-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      相关资源
      最近更新 更多