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

如何为DataFrame中每个purchaseId添加含age值的行

为每个purchaseId添加age行的实现方法

要实现给每个purchaseId对应组添加一行(item列填入该组的age值),可以用以下两种简洁的pandas方法:

方法一:去重+合并法

  1. 提取每个purchaseId的唯一记录(同一组的age值一致,只需保留一行即可)
  2. 将提取出的记录的item列替换为age的字符串值(和原item列类型保持一致)
  3. 合并原始数据和新增行,再按purchaseId排序保证组内顺序统一
import pandas as pd

# 原始数据示例
df = pd.DataFrame({
    'purchaseId': [22,22,22,53,53,53],
    'item': ['apples','coffee','wipes','tomatoes','sugar','tea'],
    'age': [35,35,35,23,23,23]
})

# 生成需要添加的行
add_rows = df.drop_duplicates('purchaseId').assign(item=lambda x: x['age'].astype(str))

# 合并并整理结果
df2 = pd.concat([df, add_rows]).sort_values('purchaseId').reset_index(drop=True)

方法二:分组生成法

通过分组遍历每个purchaseId组,直接生成对应的新增行,再合并到原数据:

import pandas as pd

# 原始数据示例
df = pd.DataFrame({
    'purchaseId': [22,22,22,53,53,53],
    'item': ['apples','coffee','wipes','tomatoes','sugar','tea'],
    'age': [35,35,35,23,23,23]
})

# 分组生成新增行
add_rows = df.groupby('purchaseId').apply(
    lambda g: pd.Series({
        'purchaseId': g['purchaseId'].iloc[0],
        'item': str(g['age'].iloc[0]),
        'age': g['age'].iloc[0]
    })
).reset_index(drop=True)

# 合并得到最终结果
df2 = pd.concat([df, add_rows]).sort_values('purchaseId').reset_index(drop=True)

两种方法最终都会得到你需要的df2结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:10:23