【问题标题】:Pivot table with list entries pandas data frame带有列表条目熊猫数据框的数据透视表
【发布时间】:2020-10-29 01:39:48
【问题描述】:

我有一个数据框,其条目如下所示:

customer_id    products_purchased
1              A,B,D,Q
2              B,K,T
3              A
4              M,H,U,R,T,Z
1              A,U,C
3              P,T
.
.
.

我想生成一个包含 customer_id 的数据透视表,然后是每个产品的列和计数(如果客户从未购买过产品,则为 0)。对于上面的例子:

customer_id    A     B     C     D     H     K     M     P     Q     R     T     U     Z
1              2     1     1     1     0     0     0     0     1     0     0     1     0
2              0     1     0     0     0     1     0     0     0     0     1     0     0
3              1     0     0     0     0     0     0     1     0     0     1     0     0
4              0     0     0     0     1     0     1     0     0     1     1     1     0

还有一个日期时间列来指示购买时间,但这对于这个特定问题并不重要。

【问题讨论】:

    标签: python pandas pivot-table


    【解决方案1】:

    这是str.get_dummies 然后是groupby:

    (df['products_purchased'].str.get_dummies(',')
       .groupby(df['customer_id']).sum()
       .reset_index()
    )
    

    输出:

       customer_id  A  B  C  D  H  K  M  P  Q  R  T  U  Z
    0            1  2  1  1  1  0  0  0  0  1  0  0  1  0
    1            2  0  1  0  0  0  1  0  0  0  0  1  0  0
    2            3  1  0  0  0  0  0  0  1  0  0  1  0  0
    3            4  0  0  0  0  1  0  1  0  0  1  1  1  1
    

    【讨论】:

    • 我想这应该跟group_by("customer_id").sum(0) 来获取每个客户的总数?
    • @CopyOfA 哦,是的,我完全没有看到那部分。请检查更新的答案。
    • 完美运行!我确实希望 get_dummies 函数运行得更快,但这是最好的生活。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    相关资源
    最近更新 更多