循环拼接字符串导致DataFrame生成错误列名问题求助
问题分析与解决
你的代码有两个关键错误导致列名异常:
- 列名引用错误:赋值时使用
df[colnames_out[i]],但colnames_out是拼接好的完整字符串(比如"new col One"),colnames_out[i]会取该字符串的第i个字符(i=0时取"n",i=1时取"e"),这就是生成单个字符列名的原因。应该直接用完整的colnames_out作为列名。 - 变量大小写错误:循环里的
colnames_in[I]用了大写的I,但循环变量是小写i,这会触发NameError,需要改成小写i。
修正后的代码:
colnames_in = ['One', 'Two', 'Three', 'Four', 'Five'] for i in range(len(colnames_in)): colnames_out = 'new col ' + colnames_in[i] df[colnames_out] = df_a[colnames_in[i]] - df_b[colnames_in[i]]
另外可以用更简洁的遍历方式,避免索引相关错误:
colnames_in = ['One', 'Two', 'Three', 'Four', 'Five'] for col in colnames_in: df[f'new col {col}'] = df_a[col] - df_b[col]
内容的提问来源于stack exchange,提问作者B S
相关产品推荐
相关产品推荐

