对于数据框 df
,我正在尝试填充列 b
按值(value)2017-01-01
如果列 a
中的值要么是空 NaNs
或Others
:
df = pd.DataFrame({'a':['Coffee','Muffin','Donut','Others',pd.np.nan, pd.np.nan]})
a
0 Coffee
1 Muffin
2 Donut
3 Others
4 NaN
5 NaN
预期结果是这样的:
a b
0 Coffee 2017-01-01
1 Muffin 2017-01-01
2 Donut 2017-01-01
3 Others NaN
4 NaN NaN
5 NaN NaN
我尝试过的方法并没有排除 NaNs
:
df.loc[~df['a'].isin(['nan', 'Others']), 'b'] = '2017-01-01'
a b
0 Coffee 2017-01-01
1 Muffin 2017-01-01
2 Donut 2017-01-01
3 Others NaN
4 NaN 2017-01-01
5 NaN 2017-01-01
谢谢!
最佳答案
使用np.nan
代替nan
:
df.loc[~df['a'].isin([np.nan, 'Others']), 'b'] = '2017-01-01'
或者在比较之前用其他
替换缺失值:
df.loc[~df['a'].fillna('Others').eq('Others'), 'b'] = '2017-01-01'
print (df)
a b
0 Coffee 2017-01-01
1 Muffin 2017-01-01
2 Donut 2017-01-01
3 Others NaN
4 NaN NaN
5 NaN NaN
关于python - 通过排除 Pandas 中另一列中的特定值来填充一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56580508/