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

如何将Pandas DataFrame中A列值与B列列表元素拼接生成新列?

Pandas DataFrame列值拼接实现方案

原始数据结构

| ColumnA  | Column B |
|----------|----------|
| prefix_1 | [A, B]   |
| prefix_2 | [C, D]   |

目标转换结果

| ColumnA  | Column B | Column C                 |
|----------|----------|--------------------------|
| prefix_1 | [A, B]   | [prefix_1-A, prefix_1-B] |
| prefix_2 | [C, D]   | [prefix_2-C, prefix_2-D] |

你尝试过的无效代码

df['ColumnC'] = df['ColumnB'].str.split(',').apply(lambda x: [df['ColumnA'] + '-' + e.strip() for e in x]).tolist()

问题原因与解决方法

你写的代码之所以无效,是因为lambda里调用df['ColumnA']取的是整个列的数据集,不是当前行对应的ColumnA值,所以没法完成逐行的拼接操作。下面给两种可行的实现方式:

方式1:逐行处理(最直接)

用apply(axis=1)遍历每一行,拿到当前行的ColumnA和Column B值进行拼接:

df['ColumnC'] = df.apply(lambda row: [f"{row['ColumnA']}-{item}" for item in row['Column B']], axis=1)

方式2:拆分后聚合(适合复杂场景)

如果Column B是列表类型(不是字符串格式的假列表),可以先把列表拆分成多行,拼接后再重新聚合回列表:

# 把列表拆分成单行
temp_df = df.explode('Column B')
# 拼接生成目标字符串
temp_df['ColumnC'] = temp_df['ColumnA'] + '-' + temp_df['Column B']
# 按ColumnA分组,把数据重新聚合成列表
df = temp_df.groupby('ColumnA', as_index=False).agg({'Column B': list, 'ColumnC': list})

补充说明:如果你的Column B是字符串格式(比如"[A, B]"),不是真正的Python列表,需要先转换成列表类型:

import ast
df['Column B'] = df['Column B'].apply(ast.literal_eval)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 18:45:16