在多个列上重复函数

2024-10-02 16:29:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在df中的所有列上应用以下内容。有没有一种方法可以在不指定每一列的情况下做到这一点

def conditions(x):
    if x['Column1'] ==0:
        return "N/A"
    elif x['Column1'] == x['Name_CleanCorrect']:
        return 1
    else:
        return 0
    
df_third['Column1_Correct'] =  df_third.apply(conditions, axis=1)

Tags: 方法namedfreturnifdef情况else
1条回答
网友
1楼 · 发布于 2024-10-02 16:29:13

迭代for循环中的列,我对您的代码做了最小的更改:

def conditions(x, colname):
    if x[colname] ==0:
        return "N/A"
    elif x[colname] == x['Name_CleanCorrect']:
        return 1
    else:
        return 0

for col in df_third.columns:    
    df_third[col + '_Correct'] = df_third.apply(conditions, axis=1, args=(col,))

还要注意,类似这样的比较操作内置于pandas中:您可以一次将整个列相互比较,因此不必通过apply按行执行。例如:

df_third.loc[df_third[col] == 0, col + '_Correct'] = "N/A"

使用df_third[col] == 0作为索引对象。见documentation

相关问题 更多 >