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

Pandas DataFrame中用双层for循环列表推导式创建新列报错解决

问题解决:基于Pandas两列创建新列

错误原因

你写的列表推导式用了两层嵌套循环,会遍历col1的每个元素和col2的每个元素的所有组合(4×4=16个结果),但DataFrame只有4行,因此出现长度不匹配的错误。

解决方案

方法1:使用zip同步遍历对应行元素

修改列表推导式,用zip同时取col1和col2的对应行元素,生成的结果长度会和DataFrame行数一致:

import pandas as pd

df = pd.DataFrame({'col1': ['aaaa', 'aabb', 'bbcc', 'ccdd'], 
                   'col2': ['ab12', 'cd15', 'kf25', 'zx78']})

df['col3'] = [x[:2] + '-' + y[2:] for x, y in zip(df['col1'], df['col2'])]
print(df)

方法2:Pandas矢量化字符串操作(推荐)

用Pandas的str方法直接对整列进行切片拼接,效率更高,适合处理大数据量:

import pandas as pd

df = pd.DataFrame({'col1': ['aaaa', 'aabb', 'bbcc', 'ccdd'], 
                   'col2': ['ab12', 'cd15', 'kf25', 'zx78']})

df['col3'] = df['col1'].str[:2] + '-' + df['col2'].str[2:]
print(df)

运行结果

两种方法都会得到预期输出:

col1  col2   col3
0  aaaa  ab12  aa-12
1  aabb  cd15  aa-15
2  bbcc  kf25  bb-25
3  ccdd  zx78  cc-78

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:55:16