我在 Pandas 数据框中有几列。基于每一列,我需要创建一个新列。此功能有效:
def f(row):
if row['col_1'] == 0:
val = 'Neutral'
elif row['col_1'] > 0:
val = 'Growth'
else:
val = 'Contraction'
return val
df['New_Col_1'] = df.apply(f(row) , axis=1)
但由于我有多个列用于比较(col_2、col_3 等),我想将列的名称作为参数传递给函数。
def f(row,col_name):
if row[col_name] == 0:
val = 'Neutral'
elif row[col_name] > 0:
val = 'Growth'
else:
val = 'Contraction'
return val
df['New_Col_1'] = df.apply(f(row,'col_1') , axis=1)
但是,有一个错误。它说参数“行”未定义。我该如何克服这个问题?
请您参考如下方法:
查看 df.loc[],它有两个参数,您可以将其视为 row-spec 和 column-spec,因此您可以像这样使用它:
df['New_Col_1'] = 'Contraction' # Default, to be overwritten below
df.loc[df['col_1'] == 0, 'New_Col_1'] = 'Neutral'
df.loc[df['col_1'] > 0, 'New_Col_1'] = 'Growth'
