python - 通过排除 Pandas 另一列中的特定值来填充一列
问题描述
对于数据框df
,如果列中b
的值为空或: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'
或者在比较替换缺失值之前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
推荐阅读
- symfony - 如何在 Symfony 4 中使用 libphonenumber.phone_number_util
- node.js - nodejs worker_threads 如何理解所有worker都完成了工作
- math - 如何将固定资源分配给图的顶点而低度顶点获得更多?
- c# - Winforms - 基于性别存储数据
- javascript - 如何让我的机器人获取已经从频道中的用户发送的随机消息,并在触发自动响应时发送该随机消息
- android - 关于 Android 上 BiometricPrompt 的一些问题
- javascript - 为什么一个功能有效,而另一个无效?
- django - 使用 Azure 应用服务中的连续部署选项部署 Django 时,db.sqlite3 被锁定
- java - 无法从数组中获得真正的价值,它只是说“NULL”
- python - numpy set_printoptions 不适用于 numpy.ma 数组