首页 > 解决方案 > 通过排除 Pandas 另一列中的特定值来填充一列

问题描述

对于数据框df,如果列中b的值为空或:2017-01-01aNaNsOthers

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

谢谢!

标签: pythonpandas

解决方案


改用:np.nan_nan

df.loc[~df['a'].isin([np.nan, 'Others']), 'b'] = '2017-01-01'

或者在比较替换缺失值之前Others

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

推荐阅读