如何在 Pandas 中按条件更新 DataFrame 列

95

有了这个DataFrame,当line_race等于0时,我该如何有条件地将rating设置为0?

    line_track  line_race  rating foreign
 25        MTH         10     84    False
 26        MTH          6     88    False
 27        TAM          5     87    False
 28         GP          2     86    False
 29         GP          7     59    False
 30        LCH          0    103     True
 31        LEO          0    125     True
 32        YOR          0    126     True
 33        ASC          0    124     True

换句话说,在DataFrame中,如果ColumnA = x,则正确的方法是令ColumnB = y,否则ColumnB = ColumnB。
3个回答

205
df.loc[df['line_race'] == 0, 'rating'] = 0

21
使用numpy.where函数判断如果ColumnA=x,则ColumnB=y,否则ColumnB保持不变
df['rating'] = np.where(df['line_race']==0, 0, df['rating'])

1
我一直使用所选答案中提供的方法。今天我遇到了一个需要根据派生值有条件地更新列A的需求。 接受的答案显示“如何将列line_race更新为0”。 以下是一个示例,您必须根据推导出的值进行更新:
df.loc[df['line_race'].isna(), 'rating'] = ( (df['line_race'] - df['line_race2'])/df['line_race2'] )

使用此功能,您只能更新符合条件的行上的动态值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接