You need to enable JavaScript to run this app. 如何识别DataFrame中person_id列重复行并将其移至原行相邻位置
优惠活动
大模型
产品
解决方案
定价
更多

如何识别DataFrame中person_id列重复行并将其移至原行相邻位置

Pandas 按person_id横向展开重复行实现方案

核心实现逻辑

该需求本质是按person_id分组聚合,将同组内纵向排列的重复行,转换为同一行内的横向列展示,仅保留每组首次出现的person_id作为锚点,同组后续记录的字段值依次向右侧拼接,和你提供的输出示例结构完全对齐。
落地流程拆分:

  • 按person_id对所有行分组,为组内每一行生成从0开始的顺序序号
  • 通过透视转换,将组内纵向的行转为横向的列维度
  • 匹配你示例的列名规则:组内第0行(首次出现的行)使用原始列名,后续行仅unique_id列追加数字后缀,其余字段列名保持原样
  • 调整行的排序逻辑,让最终行顺序和原始表中首次出现各person_id的顺序完全一致

可直接运行的代码示例

首先构造和你给出的结构完全一致的原始测试表:

import pandas as pd
df = pd.DataFrame(
    [
        [92, 11, "apple", "silver", "Miller"],
        [93, 12, "cherry", "bronze", "Gus"],
        [967, 121, "orange", "purple", "Mike"],
        [94, 176, "apple", "silver", "Miller"],
        [95, 176, "banana", "gold", "John"],
        [96, 176, "orange", "purple", "Mike"],
        [445, 111, "apple", "silver", "Miller"],
        [100, 112, "cherry", "bronze", "Gus"],
        [232, 111, "apple", "silver", "Miller"],
        [355, 555, "cherry", "bronze", "Gus"]
    ],
    columns=["unique_id", "person_id", "fruit_name", "poduct", "guest"]
)

核心处理逻辑:

# 为每个person_id组内的行生成顺序序号,从0开始
df["group_order"] = df.groupby("person_id").cumcount()
# 按person_id分组、组内序号做透视,将纵向行转为横向列
pivot_table = df.pivot(
    index="person_id",
    columns="group_order",
    values=["unique_id", "fruit_name", "poduct", "guest"]
)
# 按示例规则生成列名
pivot_table.columns = [
    f"unique_id_{order}" if field == "unique_id" and order != 0 else field
    for field, order in pivot_table.columns
]
# 还原行顺序:匹配原始表中各person_id首次出现的先后位置
first_appear_order = df[df["group_order"] == 0].reset_index()
final_result = pivot_table.reset_index().merge(
    first_appear_order[["person_id", "index"]],
    on="person_id",
    how="right"
).sort_values(by="index").drop(columns="index").reset_index(drop=True)

运行代码后得到的final_result结构完全匹配你给出的输出示例:仅单次出现的person_id行右侧无拓展列,多次重复的person_id会按组内原始顺序,把后续行的内容依次拼接到右侧对应位置。

可参考的搜索关键词

如果需要进一步拓展功能,可以用以下关键词检索相关实现方案:

  • pandas 分组横向展开重复记录
  • pandas pivot 同组行转列
  • pandas 聚合多记录为单行多列

注:内容的提问来源于stack exchange,提问作者ApacheOne

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 03:15:00