python - Pandas:将项目转换为字典,其中 orderID 是字典键

标签 python pandas

我有一个订单和商品列表。有些订单有超过 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/

相关文章:

python - QWeb 异常 : "' NoneType' object is not callable"while evaluating

Python Django - 清晰的表单布局

python - 如何在 iPython 笔记本中预览 Pandas DataFrame 的一部分?

python - 从 .csv 中读取 URL 列表以使用 Python、BeautifulSoup、Pandas 进行抓取

python - Pandas 上的 fiilna() 方法在 axis=1 上调用时忽略就地参数返回错误

python - 要拆分的字符串列表的每个元素

python - Conda 环境中的 LD_LIBRARY_PATH

python - 错误: Unable to find conda binary. 是否安装了Anaconda?网状Rstudio

python - 从字典列表中删除键值对

python - 如果在列表中找不到 key ,如何获得默认值零?