【发布时间】:2017-08-14 10:16:32
【问题描述】:
我在 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)
但是,有一个错误。它说参数“行”没有定义。我该如何克服这个问题?
【问题讨论】:
-
您缺少
lambda函数:df.apply(lambda row: f(row,'col_1') , axis=1) -
这行得通。谢谢!!
标签: python python-2.7 pandas dataframe