我有一个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)
但是,出现了一个错误。它说参数 'row' 未定义。我该如何解决?
lambda
函数:df.apply(lambda row: f(row,'col_1') , axis=1)
。 - Nickil Maveli