【问题标题】:Join Similar OrderID and Aggregate Purchase Item Pandas/DataFrame加入相似的 OrderID 并聚合购买项目 Pandas/DataFrame
【发布时间】:2020-02-28 09:25:15
【问题描述】:

最近在学习 Pandas。 我的问题是我有一个由“OrderID”和“Purchase Item”组成的DataFrame 我希望它 GroupBy OrderID 并将 PurchasedItem 与 OrderID 一起加入一列。

dupRow_1['Grouped'] = dupRow_1.groupby('Order ID')['Product'].transform(lambda x: ','.join(x))

使用了上面的代码,但出现长度不匹配错误: “长度不匹配:预期轴有 15004 个元素,新值有 15549 个元素”

知道我该怎么做吗?谢谢。

Photo

【问题讨论】:

    标签: python-3.x pandas jupyter-notebook


    【解决方案1】:

    我认为Order ID 列中存在缺失值,因此groupby 排除了行。因此,您可以将它们替换为数据中不存在的某个值,例如missing:

    dupRow_1 = pd.DataFrame({
            'Product':list('abcdef'),
             'Order ID':[np.nan,5,4,5,5,np.nan],
    
    })
    dupRow_1['Grouped'] = (dupRow_1['Product'].groupby(dupRow_1['Order ID'].fillna('missing'))
                                              .transform(lambda x: ','.join(x)))
    
    print (dupRow_1)
      Product  Order ID Grouped
    0       a       NaN     a,f
    1       b       5.0   b,d,e
    2       c       4.0       c
    3       d       5.0   b,d,e
    4       e       5.0   b,d,e
    5       f       NaN     a,f
    

    【讨论】:

    • 那行得通。我相信 FillNA('missing') 完成了这项工作。我没有考虑数据中是否可能存在NA。谢谢。
    猜你喜欢
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 2021-04-14
    • 2018-04-16
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    相关资源
    最近更新 更多