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

Pandas DataFrame列拆分时列表推导式运行结果不符合预期问题求解

问题原因

  • 核心错误是zip()参数传参逻辑不符合预期:
    你最初的代码给zip传入了和col_names长度相等的多个独立可迭代对象,zip会按位置配对不同可迭代对象的同位置元素,得到预期结果。修改后的代码直接把生成器表达式作为唯一参数传给zip,此时zip只接收到1个可迭代对象(就是这个生成器本身),会直接把生成器输出的每个列拆分结果单独打包成元组,而非跨列按位置配对元素。
  • 额外语法问题:你的修改后代码末尾缺少对应zip的右括号,运行会直接报语法错误。

修复方案

用*解包生成器表达式,把生成器输出的多个列拆分结果作为独立参数传给zip即可:

for i in range(len(df)):
    s = tuple(zip(*(df[col].str.split(",")[i] for col in col_names)))

优化建议

你当前逐行遍历DataFrame的写法效率较低,可提前完成整列拆分避免循环内重复计算:

# 提前完成所有目标列的拆分,避免循环内重复执行str.split
split_res = [df[col].str.split(",") for col in col_names]
for i in range(len(df)):
    s = tuple(zip(*[col_data[i] for col_data in split_res]))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:24:01