You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas如何基于指定列重复值将关联唯一值从行转为多列输出

实现方案

核心逻辑是先对同Fruit的Person按顺序编号,再通过透视操作转成宽表,完整实现代码如下:

import pandas as pd

# 构造测试数据,实际使用时替换为自己的df即可
df = pd.DataFrame({
    'Fruit': ['Banana', 'Banana', 'Carrot', 'Carrot', 'Carrot'],
    'Person': ['Jake', 'Paul', 'Nancy', 'Sydney', 'Jane']
})

# 步骤1:按Fruit分组,给分组内每一行生成从1开始的顺序编号
df['col_suffix'] = df.groupby('Fruit').cumcount() + 1
# 步骤2:透视转换为宽表
res = df.pivot(index='Fruit', columns='col_suffix', values='Person')
# 步骤3:修改列名符合要求,空值填充为空字符串,重置索引
res.columns = [f'Person{i}' for i in res.columns]
res = res.reset_index().fillna('')

执行后得到的res就是你需要的目标格式。

groupby部分用法说明

df.groupby('Fruit').cumcount()的作用是:将数据按Fruit字段分组后,给每个分组内部的行按原始数据的出现顺序从0开始递增编号,加1之后就得到了1、2、3的序号,刚好对应Person1、Person2、Person3的后缀。
你之前用drop_duplicates只能保留每个分组的首条/尾条记录,无法获取中间值,就是因为没有给分组内的所有行做独立编号,导致中间行被去重逻辑直接删掉了。


内容的提问来源于stack exchange,提问作者justryingouthere

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:15:04