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

如何高效解包存储元组的Pandas DataFrame并配对同位元素

解决方案

核心思路

利用itertools.zip_longest处理不等长元组配对,结合Pandas的apply+explode方法完成无显式循环的展开操作,天然适配元组长度不一致的场景。

完整实现代码

import pandas as pd
from itertools import zip_longest

# 构造测试数据(包含不等长元组)
l1=[('a','b'),('c','d','d2'),('e','f','g'),('h','i')]
l2=[('j','k'),('l','m'),('n','o','p'),('q','r')]
df  = pd.DataFrame(list(zip(l1,l2)),columns=['Col1','Col2'])

# 配对同位置元素,不等长位置填空字符串
df['pairs'] = df.apply(lambda row: list(zip_longest(row['Col1'], row['Col2'], fillvalue='')), axis=1)
# 展开配对结果
df = df.explode('pairs', ignore_index=True)
# 拆分出最终两列
df[['val1', 'val2']] = pd.DataFrame(df['pairs'].tolist(), index=df.index)

# 输出结果
for _, row in df[['val1', 'val2']].iterrows():
    print(row['val1'], row['val2'])

运行输出

a j
b k
c l
d m
d2 
e n
f o
g p
h q
i r

方案优势

  • 无显式的多层Python级循环,更符合Pythonic编码规范,数据量较大时执行效率远高于手动循环
  • 天然支持不等长元组配对,可通过修改fillvalue参数自定义缺失位置的填充值(如填None、NaN等)
  • 输出结果为结构化的DataFrame格式,可直接用于后续的数据分析、存储等操作,灵活性更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 23:00:03