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

Pandas需求:为X列重复行生成对应Y列的CSV合并值填充至Z列

处理Pandas DataFrame重复X列对应的Y列合并需求

需求说明

给定包含X、Y、Z列的DataFrame,当X列存在重复值时,将该X对应的所有Y列值拼接为CSV格式字符串,填充到对应行的Z列;若X无重复,Z列保持为空。

输入示例

X  Y   Z
0  1  a NaN
1  1  b NaN
2  2  c NaN

期望输出

X  Y     Z
0  1  a  a,b
1  1  b  a,b
2  2  c   NaN

解决方案

通过groupby结合transform方法即可实现,该方法能为原DataFrame每行返回对应分组的计算结果,完美匹配需求:

import pandas as pd

# 构造输入DataFrame
df = pd.DataFrame({'X': [1, 1, 2], 'Y': ['a', 'b', 'c'], 'Z': [None, None, None]})

# 计算每个X对应的Y列CSV拼接字符串
y_joined = df.groupby('X')['Y'].transform(lambda x: ','.join(x))

# 仅为X重复的行填充Z列
df['Z'] = df['Z'].where(~df.duplicated('X', keep=False), y_joined)

print(df)

代码解释

  • groupby('X')['Y']:按X列分组,提取每组的Y列数据
  • transform(lambda x: ','.join(x)):对每个分组的Y值进行CSV格式拼接,返回与原DataFrame行数一致的结果序列
  • df.duplicated('X', keep=False):标记所有X值重复的行(keep=False会标记所有重复行,而非仅保留第一个/最后一个)
  • df['Z'].where(...):仅在X不重复时保留原Z值(空),否则替换为拼接后的字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:45:30