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

如何用Pandas实现DataFrame同ID行的UNITS值合并到DESC列?

用Pandas实现DataFrame的DESC字段拼接处理

完全可以用Pandas实现这个需求,下面是两种可行的实现方式:

方法一:分组聚合+合并拼接

先按MY_ID分组,将每组的UNITS值拼接成空格分隔的字符串,再合并回原DataFrame,最后完成DESC字段的拼接:

import pandas as pd

# 构造示例数据
data = {
    'MY_ID': ['A1', 'A1', 'A1', 'A1', 'A2', 'A2', 'A2', 'A2'],
    'UNITS': [10, 15, 0, 45, 20, 22, 28, 30],
    'DESC': ['DESCRIPTION'] * 8
}
df = pd.DataFrame(data)

# 分组聚合:将每个MY_ID对应的UNITS转为空格分隔的字符串
units_agg = df.groupby('MY_ID')['UNITS'].apply(lambda x: ' '.join(map(str, x))).reset_index(name='UNITS_STR')

# 合并并拼接DESC字段
df = df.merge(units_agg, on='MY_ID')
df['DESC'] = df['DESC'] + ' ' + df['UNITS_STR']
df = df.drop('UNITS_STR', axis=1)

print(df)

方法二:使用transform简化操作

利用transform方法可以直接将分组聚合的结果广播到原DataFrame的每一行,无需额外合并步骤,代码更简洁高效:

import pandas as pd

# 构造示例数据
data = {
    'MY_ID': ['A1', 'A1', 'A1', 'A1', 'A2', 'A2', 'A2', 'A2'],
    'UNITS': [10, 15, 0, 45, 20, 22, 28, 30],
    'DESC': ['DESCRIPTION'] * 8
}
df = pd.DataFrame(data)

# 直接生成拼接后的DESC字段
df['DESC'] = df['DESC'] + ' ' + df.groupby('MY_ID')['UNITS'].transform(lambda x: ' '.join(map(str, x)))

print(df)

两种方法执行后都会得到你期望的输出:

MY_ID UNITS                     DESC
0    A1    10   DESCRIPTION 10 15 0 45
1    A1    15   DESCRIPTION 10 15 0 45
2    A1     0   DESCRIPTION 10 15 0 45
3    A1    45   DESCRIPTION 10 15 0 45
4    A2    20  DESCRIPTION 20 22 28 30
5    A2    22  DESCRIPTION 20 22 28 30
6    A2    28  DESCRIPTION 20 22 28 30
7    A2    30  DESCRIPTION 20 22 28 30

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:05:29