Python 3.6.1中遍历字符串列表批量生成DataFrame净变化列求助
嗨,我来帮你搞定这个批量生成新列的问题~
首先咱们先看看你原来代码里的问题:
- 你写错了变量名:
root_vars_[i]应该直接用循环变量i就行,因为root_vars是字符串列表,循环里的i已经是每个根变量(比如'x'、'y')了,不需要用索引去取; - 字符串格式化的位置错了:
%操作符得紧跟在要格式化的字符串后面,不能放在整行末尾,不然Python没法正确替换占位符。
修正后的循环写法(两种可选)
方法1:用Python 3.6+支持的f-string(推荐,更直观)
root_vars = ['x', 'y', 'z'] for var in root_vars: df[f'{var}_net'] = df[f'{var}_in'] - df[f'{var}_out']
方法2:用传统的%格式化字符串
root_vars = ['x', 'y', 'z'] for var in root_vars: df['%s_net' % var] = df['%s_in' % var] - df['%s_out' % var]
更简洁的批量写法(Pandas风格)
如果想更高效地一次性生成所有新列,可以用字典推导式配合df.assign(),代码更紧凑:
root_vars = ['x', 'y', 'z'] df = df.assign(**{f'{var}_net': df[f'{var}_in'] - df[f'{var}_out'] for var in root_vars})
这样不管你要生成15个还是更多新列,只要把根变量加到root_vars列表里就行,完全不用手动重复写代码啦~
内容的提问来源于stack exchange,提问作者Maia
相关产品推荐
相关产品推荐

