使用此DataFrame,当rating
等于零时,如何有条件地将line_race
设置为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
换句话说,如果ColumnA = x然后ColumnB = y,那么DataFrame上的正确方法是什么呢?ColumnB = ColumnB
答案 0 :(得分:96)
df.loc[df['line_race'] == 0, 'rating'] = 0
答案 1 :(得分:3)
使用numpy.where说如果ColumnA = x,然后ColumnB = y,否则ColumnB = ColumnB :
df['rating'] = np.where(df['line_race']==0, 0, df['rating'])
答案 2 :(得分:0)
我一直使用“选择的答案”中给出的方法,今天我需要在有条件的情况下使用派生值更新列A。 接受的答案显示“如何将line_race列更新为0。 下面是一个示例,您必须获取要更新的值:
df.loc[df['line_race'].isna(), 'rating'] = ( (df['line_race'] - df['line_race2'])/df['line_race2'] )
使用此方法,您只能在符合条件的行上更新动态值。