Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:将项目转换为dict,其中orderID是dict键_Python_Pandas - Fatal编程技术网

Python 熊猫:将项目转换为dict,其中orderID是dict键

Python 熊猫:将项目转换为dict,其中orderID是dict键,python,pandas,Python,Pandas,我有一份订单和物品清单。有些订单有多个项目 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
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'])
您可以这样做:

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

请注意,使用内容为容器类型(如列表)的数据帧有时会产生意外的结果。如果可能的话,将数据按行分隔,并通过
groupby

进行聚合来完成所需的计算,通常会更加平滑。为什么要这样做?在许多情况下,最好保持现有格式,并通过在orderid上分组来执行任何需要执行的操作。尝试应用apriori算法(频繁项集),并需要在我的dataset中按列显示项。BrenBarn-任何将每个项推到下一个空列的明显方式,而不是生成列表?@JeffreyJames:你想在“空”列中看到什么?这听起来像是在创造一个非表格结构,这对熊猫来说并不太合适。此外,如果您的组的大小差异很大(因为某些行中会有很多空元素),则效率会很低。很好的一点是@BrenBarn-在df.对数据进行csv'处理之后,一旦我丢失了列表字符[and](这很好),格式实际上是可行的。我现在将尝试运行分析。再次感谢你的帮助。所有使用vstack、unstack和melt的尝试都让我一事无成:)