我有一个订单和商品列表。有些订单有超过 1 件商品。
Orderid, Itemid
1 123
2 122
2 234
3 334
4 111
4 998
4 110
我已将它们读入数据框。如何 reshape 数据框,或使用 python 获取数据,如下所示:
Orderid: [itemid, itemid, ....]
Orderid: [itemid, itemid, ....]
Orderid: [itemid, itemid, ....]
Orderid: [itemid, itemid, ....]
我尝试过:创建一个其键都是空列表的字典,然后向每个键添加相关值的列表。但它似乎不起作用,因为运行此命令后 mydict.values() 仍然是空列表。
for order in df['Order']:
mydict[order] = []
for order in df['Order']:
if order == mydict[order]:
mydict[order].append(df['Item'])
最佳答案
你可以这样做:
>>> df.groupby('Orderid').Itemid.apply(list)
Orderid
1 [123]
2 [122, 234]
3 [334]
4 [111, 998, 110]
Name: Itemid, dtype: object
请注意,使用内容为容器类型(如列表)的 DataFrame 有时会产生意外结果。如果可能的话,将数据按行分隔并通过 groupby
聚合来执行所需的计算通常会更顺利。
关于python - Pandas:将项目转换为字典,其中 orderID 是字典键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34846060/