我试图在Python 3.6.1中做一个涉及字符串列表的相当简单的循环。基本上,我有一个如下所示的数据框:
X_out Y_out Z_in X_in Y_in Z_in
Year
1969 4 3 4 4 3 3
1970 2 0 1 3 2 2
1971 3 1 1 0 1 2
1972 2 0 0 3 1 0
我希望找到X,Y和Z的净变化,使其成为此数据框中的新列。
最简单的形式可能是
df['x_net'] = df['x_in'] - df['x_out']
df['y_net'] = df['y_in'] - df['y_out']
df['z_net'] = df['z_in'] - df['z_out']
但实际上,需要以这种方式创建大约15列。因为它是一只熊,所以我认为最好放入一个函数,或者至少是一个循环。我列出了我们的初始" root"变量,没有看起来像这样的后缀:
root_vars = ['x', 'y', 'z']
我认为我的代码可能(?)看起来像:
for i in root_vars:
df['%s_net'] = df['%s_in'] - df['%s_out'] %(root_vars_[i])
但这绝对不对。有人可以帮我一把吗?
非常感谢你!
答案 0 :(得分:1)
您可以使用相对较新的(Python 3.6)formatted string literals:
for i in root_vars:
df[f'{i}_net'] = df[f'{i}_in'] - df[f'{i}_out']
每个字符串前面的f
前缀会导致{i}
替换为变量i
的值。如果您希望代码在3.6之前的Python版本中可用,您可以使用更常用的格式:
for i in root_vars:
df['{}_net'.format(i)] = df['{}_in'.format(i)] - df['{}_out'.format(i)]