You need to enable JavaScript to run this app. 如何按索引聚合指定列字符串并保留DataFrame其余列数据?
优惠活动
大模型
产品
解决方案
定价
更多

如何按索引聚合指定列字符串并保留DataFrame其余列数据?

你可以使用 Pandas 的 groupby() + transform() 组合实现需求,transform 会将分组聚合后的结果映射回组内每一行,不会改变原数据的行数,也不会丢弃未参与聚合的列,完全匹配你的需求。

代码示例

1. 单字段拼接实现

import pandas as pd

# 构造你的示例数据
df = pd.DataFrame({
    'ID': [1,1,2,2],
    'Var1': ['row1', 'row2', 'row4', 'row5'],
    'Var2': ['abc', 'bcd', 'def', 'tss'],
    'Var3': [321, 456, 555, 889]
})

# 按ID分组,拼接Var1列的字符串
df['Var1'] = df.groupby('ID')['Var1'].transform(lambda x: ', '.join(x))

2. 多字段批量拼接

如果你有多个列需要按ID分组拼接,只需把要处理的列名放入列表循环处理即可,未放入列表的列会保留原始值不变:

# 此处填入所有需要按ID拼接的列名
need_concat_cols = ['Var1', 'Var2']

for col in need_concat_cols:
    df[col] = df.groupby('ID')[col].transform(lambda x: ', '.join(x))

补充说明

你之前用普通聚合操作会丢失列,是因为常规的agg()聚合会为每个分组仅返回1行结果,同组内值不同的非聚合字段会被默认丢弃,transform 正好规避了这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 02:30:03