如何在Pandas中仅用一个列名列表,循环追加'new'生成输出列名?
解决方案
方法1:修改循环逻辑,动态生成列名
不需要单独定义colnames_out,直接遍历colnames_in中的每个列名,通过f-string拼接new 前缀生成新列名:
import pandas as pd colnames_in = ['col a', 'col b', 'col c'] df_dif = pd.DataFrame() # 先初始化空DataFrame for col in colnames_in: df_dif[f'new {col}'] = df_a[col] - df_b[col]
这种写法比原代码的索引循环更直观,也避免了维护两个列名列表的重复工作。
方法2:利用Pandas向量化运算(更高效)
Pandas推荐尽量避免循环,直接对指定列做向量化差值运算,再批量重命名列:
import pandas as pd colnames_in = ['col a', 'col b', 'col c'] # 计算两DataFrame指定列的差值,同时批量添加new前缀 df_dif = (df_a[colnames_in] - df_b[colnames_in]).rename(columns=lambda x: f'new {x}')
这种方式代码更简洁,运算效率也更高,适合处理大规模数据。
内容的提问来源于stack exchange,提问作者B S
相关产品推荐
相关产品推荐

