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

Pandas高效合并多列表列生成新列(规避循环与逐列索引)

高效合并Pandas DataFrame每行所有列的列表生成新列

如果你需要合并DataFrame每行中所有列的列表,生成新列C,且不想手动逐列拼接或写循环,这里有两个高效方案:

方案1:使用apply结合sum(简洁直观)

直接按行处理,利用列表的sum操作实现拼接:

import pandas as pd

# 原始数据
df = pd.DataFrame({'A' : [['a', 'b', 'c'], ['e', 'f', 'g','g']], 'B' : [['1', '4', 'a'], ['5', 'a']]})

# 生成新列C
df['C'] = df.apply(lambda row: sum(row, []), axis=1)

这里sum(row, [])的作用是将该行所有列的列表依次拼接到空列表中,等价于手动执行row['A'] + row['B'] + ...,但无需指定列名,自动适配所有列。

方案2:使用stack+groupby(更适合大数据量)

如果数据量极大,apply的逐行操作可能不够快,可以试试Pandas的向量化操作组合:

df['C'] = df.stack().groupby(level=0).agg(list)
  • stack()会将所有列的列表元素展开,生成一个以原行索引和列名为多层索引的Series;
  • groupby(level=0)按原行索引分组;
  • agg(list)将每个分组的元素重新聚合为列表,正好对应每行合并后的结果。

验证结果

执行任意一种方案后,df的结果都会符合预期:

print(df)
# 输出:
#                  A          B                              C
# 0     [a, b, c]  [1, 4, a]        [a, b, c, 1, 4, a]
# 1  [e, f, g, g]     [5, a]  [e, f, g, g, 5, a]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:35:30