python - 使用 Groupby 将数据框列放入列表列表
问题描述
一个数据框,我想对其进行转换。
data = {'Number': [536, 578, 36, 468, 86],
'Content' : ["Banana","Apple","Orange","Mango","Grape"],
'Quantity': [1, 2, 5, 2, 6],
'Origin': ["TX","TX","OP","OP","OP"]}
df = pd.DataFrame(data)
理想的结果是这样的:
OP [[36,5,Orange], [86,6,Grape], [468,2,Mango]]
TX [[536,1,Banana], [578,2,Apple]]
我试过了:
df.groupby(['Origin', 'Number', 'Quantity'])['Content'].apply(list))
还:
df.groupby(['Origin', 'Number', 'Quantity'])'Content'].apply(list)).groupby(level=0).apply(list)
却不敢靠近。
什么是正确的方法?谢谢你。
解决方案
你可以做:
df.groupby('Origin').apply(lambda x: x.drop('Origin', axis=1).values.tolist())
输出:
Origin
OP [[36, Orange, 5], [468, Mango, 2], [86, Grape,...
TX [[536, Banana, 1], [578, Apple, 2]]
dtype: object
如果您希望列表以正确的顺序排列,则需要重新排列列。例如:
(df[['Number', 'Quantity', 'Content']]
.groupby(df['Origin'])
.apply(lambda x: x.values.tolist())
)
你得到:
Origin
OP [[36, 5, Orange], [468, 2, Mango], [86, 6, Gra...
TX [[536, 1, Banana], [578, 2, Apple]]
dtype: object
推荐阅读
- javascript - 这是什么语言以及如何运行它?
- tensorflow - 如何找到二维张量的最大值索引?
- jquery - Ajax 在未填充失败数据时开始表单
- python - 如何在 django 中不使用 {% for %} 过滤查询集中的项目
- database - Postgresql 平均值和分组依据
- java - Groovy 在脚本的基类中调用意外的“get(String)”方法
- swift - 错误“冗余约束‘Self’:‘AnyObject’” - `AnyObject` 在哪里?
- python - 每次运行 COPY 命令时我应该创建表吗
- flutter - 在 Flutter 中将数据传递给有状态的小部件
- html5-video - 整个视频的 Videojs 持续时间显示为 0