python - 将事务数据格式的 pandas 数据框转换为列表 - Python

标签 python pandas

我有一个事务格式的 pandas 数据框:

id  purchased_item
1   apple
1   banana
1   carrot
2   banana
3   apple
4   apple
4   carrot
4   diet coke
5   banana
5   carrot
6   banana
6   carrot

我想将其转换为以下内容:

[['apple', 'banana', 'carrot'],
 ['banana'],
 ['apple'],
 ['apple', 'carrot', 'diet coke'],
 ['banana', 'carrot'],
 ['banana', 'carrot']]

我已经尝试过这个:

df.groupby(['id'])['purchased_item'].apply(list)

输出如下:

customer_id
1                 [apple, banana, carrot]
2                                [banana]
3                                 [apple]
4              [apple, carrot, diet coke]
5                        [banana, carrot]
6                        [banana, carrot]

下一步该做什么?或者有不同的方法吗?非常感谢您的帮助。

最佳答案

您在 question 的回答的评论中提到的解决方案:

df.groupby(['id'])['purchased_item'].apply(list).values.tolist()

In [434]: df.groupby(['id'])['purchased_item'].apply(list).values.tolist()
Out[434]:
[['apple', 'banana', 'carrot'],
 ['banana'],
 ['apple'],
 ['apple', 'carrot', 'diet_coke'],
 ['banana', 'carrot'],
 ['banana', 'carrot']]

编辑

与 @Colonel Beauvel 解决方案进行比较的一些测试性能:

In [472]: %timeit [gr['purchased_item'].tolist() for n, gr in df.groupby('id')]
100 loops, best of 3: 2.1 ms per loop

In [473]: %timeit df.groupby(['id'])['purchased_item'].apply(list).values.tolist()
1000 loops, best of 3: 1.36 ms per loop

关于python - 将事务数据格式的 pandas 数据框转换为列表 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34082065/

相关文章:

python - 如果满足条件,则使用其他列值 Panda

python-3.x - 类型错误 : len() of unsized object when comparing and I cannot make sense of it

python - 合并 Pandas DataFrame 中多行的数据

python - Flask + sqlalchemy 证书验证失败 : IP address mismatch

python - 空发电机

python - 如何检查当前日期和时间是否晚于给定日期和时间

python - Django REST Framework 授权 token

python - 为什么在使用过滤器时 "return s and s.strip()"有效?

python - 每行比较两列 Pandas 行

python - Pandas Dataframe 分组和标准差