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

如何实现pandas DataFrame元组列的向量化快速拆分切片?

可行的向量化实现方案

你之前的写法报错是因为df['A'][:, 0]是MultiIndex的索引语法,无法用来提取列内每个元组的对应位置元素。以下是几种性能远高于apply的实现方式:

方法1:直接转换为DataFrame赋值(最通用,推荐)

直接将元组列转为列表后构造DataFrame,一次性拆分多列,性能最优:

df[['A1', 'A2']] = pd.DataFrame(df['A'].tolist(), index=df.index)

如果元组长度不定,也可以通过这种方式自动生成对应数量的列,只需要修改列名列表即可。

方法2:使用str访问器提取(写法最简洁)

pandas的str访问器支持对任意可迭代元素做位置索引,无需额外转换:

df['A1'] = df['A'].str[0]
df['A2'] = df['A'].str[1]

该写法代码量最少,性能比apply高1~2个数量级,适合中小规模数据集。

方法3:基于numpy数组索引(适合超大规模数据集)

如果数据量极大,用numpy做底层转换速度更快:

# 将元组列转为二维numpy数组
tuple_arr = np.array(df['A'].to_list())
# 按列提取赋值
df['A1'] = tuple_arr[:, 0]
df['A2'] = tuple_arr[:, 1]

性能参考

百万行规模的数据集下,以上三种方案的执行时间均在秒级以内,远快于逐行apply的数分钟耗时。

内容的提问来源于stack exchange,提问作者Jost A.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:24:02