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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:36:19