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

如何在Pandas中为DataFrame列表列元素拼接对应列字符串?

解决方法:将DataFrame列值拼接至列表元素生成新列

我来帮你搞定这个需求!你想要把a列的字符串值,逐个拼接到c列对应行的列表每个元素后面,生成新列d对吧?下面给你两种实用的方法,比你之前尝试的方式更靠谱:

方法一:用apply快速实现(直观易读)

这种方法代码简洁,适合中小规模的数据,逻辑一目了然:

首先先构造示例DataFrame方便你测试:

import pandas as pd

df = pd.DataFrame({
    'a': ['d', 'f', 'g'],
    'b': [1, 2, 3],
    'c': [['f', 'h'], ['u', 'v'], ['i', 'o']]
})

然后执行下面的代码生成d列:

df['d'] = df.apply(lambda row: [item + row['a'] for item in row['c']], axis=1)

这里的逻辑是按行处理:对每一行,遍历c列的列表元素,把每个元素和当前行的a值拼接,最后把拼接后的元素组成新列表赋值给d列。

方法二:向量化操作(适合大数据量)

如果你的数据集很大,apply的效率可能不够,推荐用explode+groupby的向量化方案,性能更优:

# 把c列的列表拆分成单独行,保留原索引
exploded_df = df.explode('c')
# 拼接c和a列的值
exploded_df['d_element'] = exploded_df['c'] + exploded_df['a']
# 按原索引分组,把拼接后的元素重新组合成列表
df['d'] = exploded_df.groupby(exploded_df.index)['d_element'].agg(list)

为什么你之前的方法没成功?

你尝试的df['c'].cat(df['a'],axis=0)用法不对,cat方法是用来拼接同类型的Series(比如都是字符串的Series),但c列是由列表组成的Series,和a列的字符串Series无法直接用cat拼接,所以会得到错误结果。

执行完上面任意一种方法后,你就能得到预期的输出:

a  b          c          d
0  d  1  [f, h]  [fd, hd]
1  f  2  [u, v]  [uf, vf]
2  g  3  [i, o]  [ig, og]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:00:28