2024-10-02 16:29:13 发布
网友
我想在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)
迭代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
df_third[col] == 0
迭代for循环中的列,我对您的代码做了最小的更改:
还要注意,类似这样的比较操作内置于pandas中:您可以一次将整个列相互比较,因此不必通过apply按行执行。例如:
使用
df_third[col] == 0
作为索引对象。见documentation相关问题 更多 >
编程相关推荐