我有一个包含两列的数据帧,其中一列称为hits:
0 NaN
1 5.0
2 NaN
3 5.0
4 NaN
...
295 NaN
296 NaN
297 NaN
298 NaN
299 NaN
另一列称为转换:
0 0
1 0
2 0
3 0
4 0
..
345 0
346 1
347 0
348 1
349 0
我想做的是检查转换列中的行是0还是1,如果它有0,命中的行将有值6(它将替换空值(,如果它只有1,它将用9 替换值
我试着使用lambda,但没有给我一个好的结果:
df['hits'] = df.apply(
lambda row: 9 if df['converted'] == 1 & df['hits'] == 'nan' else 6
,axis=1)
您需要将df
更改为局部变量row
df['hits'] = df.apply(
lambda row: 9 if row['converted'] == 1 & pd.isnull(row['hits']) else 6
,axis=1)
或者使用布尔掩码
df.loc[df['converted'].eq(0) & df['hits'].isna(), 'hits'] = 6
df.loc[df['converted'].eq(1), 'hits'] = 9