pra*_*har 3 python dataframe python-2.7 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)
Run Code Online (Sandbox Code Playgroud)
但是由于我有几个要比较的列(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)
Run Code Online (Sandbox Code Playgroud)
但是,有一个错误。它说未定义参数“行”。我如何克服这个问题?
检查一下df.loc[],它需要两个参数,您可以将它们视为行规范和列规范,因此您可以像这样使用它:
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'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1668 次 |
| 最近记录: |