pandas.DataFrame对根据某些列对某些列进行修改

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

你可能感兴趣的:(数据分析笔记,pandas,python,数据分析)