如何实现Pandas数组类型列的元素级拼接
Pandas数组列按位置拼接解决方案
你可以通过两种常用方案实现需求,分别适配通用场景和大数据量高性能场景:
方法1:通用适配方案(兼容所有Pandas版本,支持不同行数组长度不一致的场景)
基于apply逐行处理,逻辑灵活好调整:
import pandas as pd # 构造示例测试数据 df = pd.DataFrame({ 'Year': [['2021','2020',''], ['2019','2018']], 'Month': [['11','12',''], ['03','07']] }) # 按位置拼接生成新列 df['YearMonth'] = df.apply( lambda row: [y + m for y, m in zip(row['Year'], row['Month'])], axis=1 )
如果你的数组元素存在非字符串类型,修改列表推导式做类型转换即可:[str(y) + str(m) for y, m in zip(row['Year'], row['Month'])]
方法2:高性能向量化方案(适用于万行以上大数据量场景)
用numpy向量化操作替代逐行遍历,速度提升10倍以上,要求所有行的数组长度完全一致:
import numpy as np df['YearMonth'] = (np.array(df['Year'].tolist()) + np.array(df['Month'].tolist())).tolist()
结果验证
执行后取第一行的拼接结果测试:
print(df['YearMonth'].iloc[0]) # 输出:['202111', '202012', '']
内容的提问来源于stack exchange,提问作者Datadev
相关产品推荐
相关产品推荐

