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

Pandas展开包含列表元组的列并合并为目标DataFrame的最优方案

Pandas元组列拆分展开最优实现方案

核心实现思路基于Pandas原生向量化操作,无需遍历逐行处理,性能最优,全程仅需两步即可得到目标结果:

  • 将exploded_features列存储的二元组拆分为两个独立的列表列
  • 对两个列表列同时执行展开操作,直接得到结构化结果

完整可运行代码

import pandas as pd

# 样例输入数据
sample_df = pd.DataFrame({'id':[1,2,3],
                         'exploded_features':[(['a1','a2','a3'],['b1','b2','b3']),
                                              (['a4','a5','a6'],['b4','b5','b6']),
                                              (['a7','a8','a9'],['b7','b8','b9'])]})

# 核心处理逻辑
# 拆分元组为两个列表列
sample_df[['exploded_features_1', 'exploded_features_2']] = pd.DataFrame(sample_df['exploded_features'].tolist(), index=sample_df.index)
# 同时展开两个列表列,重置索引并筛选目标字段
result = sample_df.explode(['exploded_features_1', 'exploded_features_2'], ignore_index=True)[['id', 'exploded_features_1', 'exploded_features_2']]

print(result)

方案优势

  • 全部采用Pandas原生接口实现,向量化运算性能远高于自定义apply、逐行遍历等方案,百万级数据量下仍能保持高效运行
  • 代码逻辑清晰简洁,仅需两行核心代码即可完成需求,维护成本低
  • 输出结果的字段顺序、索引形式和预期完全一致,无需额外调整

低版本Pandas兼容方案

如果你使用的Pandas版本低于1.3(不支持多列同时explode),可以使用以下兼容写法:

# 低版本兼容处理逻辑
sample_df = sample_df.assign(val=sample_df['exploded_features'].apply(lambda x: list(zip(*x)))).explode('val', ignore_index=True)
sample_df[['exploded_features_1', 'exploded_features_2']] = pd.DataFrame(sample_df['val'].tolist(), index=sample_df.index)
result = sample_df[['id', 'exploded_features_1', 'exploded_features_2']]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:36:03