Skip to main content
 首页 » 编程设计

python之根据列使用函数满足的条件在 Pandas 中创建新列

2025年05月04日22freeliver54

我在 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'