如何通过列名列表批量合并Pandas列中的列表元素
批量合并Pandas中多列的列表元素
当然可以!当需要处理的列名数量较多时,完全不用手动逐个写出列名相加,用Pandas的工具方法结合列名列表就能轻松实现批量合并,下面给你两种实用的实现方式:
方法一:使用apply遍历行合并
通过apply方法逐行处理指定列,将每行中各列的列表依次合并:
import pandas as pd # 示例数据 df = pd.DataFrame({ 'allmz':([[1,2,3],[2,4,5],[2,5,5],[2,3,5],[1,4,5]]), 'allint':([[11,31,31],[21,41,51],[41,51,51],[11,31,51],[1,51,11]]), 'allx':([[6,7,3],[2,4,5],[2,5,5],[2,9,5],[3,4,5]]) }) # 定义需要合并的列名列表 columns_to_merge = ['allmz','allint','allx'] # 批量合并列中的列表 df['new'] = df[columns_to_merge].apply(lambda row: sum(row, []), axis=1) print(df)
代码说明:
df[columns_to_merge]筛选出需要处理的目标列lambda row: sum(row, []):对每一行来说,sum会把行内所有列表元素依次拼接,初始值设为空列表[],确保合并后的结果是一个完整的列表
方法二:使用agg聚合合并
另一种方式是用agg方法,效果和apply类似,写法稍有不同:
df['new'] = df[columns_to_merge].agg(lambda x: sum(x.tolist(), []), axis=1)
灵活调整列顺序或重复列
如果需要重复合并某列(比如你示例中两次合并allint),只要在列名列表中重复该列名即可:
columns_to_merge = ['allmz','allint','allint','allx']
这样合并后的new列就会包含allmz+allint+allint+allx的列表内容,和你手动写df['allmz'] + df['allint'] + df['allint'] + df['allx']效果完全一致。
内容的提问来源于stack exchange,提问作者Jan
相关产品推荐
相关产品推荐

