df.loc[((df.money< 95) | (df.money> 110)) & (df.type== '2'), 'total'] = 1
- 判断条件无论大小一定要用括号括起来,不然会报错
- 这样的方式是不正确的,只可以如上所示
df.loc[((df.money< 95) | (df.money> 110)) & (df.type== '2')]['total'] = 1
示例
In [123]: df
Out[123]:
max_speed shield age
0 1 1.0 NaN
1 2 2.0 34.0
2 2 2.0 34.0
我们希望修改shield为1,age为NaN的值进行填充空值
我们可能会写成以下两种方式
df.loc[(df['shield']==1)&(df['age'].isnan)] = 12
或者
df.loc[(df['shield']==1)&(df['age'] == np.nan)] = 12
会发现无法进行修改
解决方式:是先将其填充为一个不可能出现的值,例如为-1,然后再修改
df['age'] = df['age'].fillna(-1)
df.loc[(df['shield'] == 1)&(df['age']==-1)] = 12