Pandas:将项目转换为dict,其中orderID是dict键

时间:2016-01-18 01:44:17

标签: python pandas

我有一份订单和物品清单。有些订单有超过1项。

Orderid, Itemid
1       123
2       122
2       234
3       334
4       111
4       998
4       110

我已将它们读入数据帧。我如何重塑数据帧,或使用python来获取我的数据:

Orderid: [itemid, itemid, ....]
Orderid: [itemid, itemid, ....]
Orderid: [itemid, itemid, ....]
Orderid: [itemid, itemid, ....]

我尝试过:创建一个其键都是空列表的dict,然后在每个键中添加相关值列表。虽然mydict.values()在运行之后仍然是空列表,但它似乎不起作用。

for order in df['Order']:
    mydict[order] = []

for order in df['Order']:
    if order == mydict[order]:
        mydict[order].append(df['Item'])

1 个答案:

答案 0 :(得分:2)

你可以这样做:

>>> df.groupby('Orderid').Itemid.apply(list)
Orderid
1              [123]
2         [122, 234]
3              [334]
4    [111, 998, 110]
Name: Itemid, dtype: object

请注意,使用内容为容器类型(如列表)的DataFrames有时会产生意外结果。如果可能的话,通常可以更顺畅地将数据按行分隔,并通过groupby进行聚合来完成计算。

相关问题