python - python中带有日期和空值的or子句
问题描述
我有以下df:
date_from date_to birth_date death_date
0 2016-01-10 2019-06-05 2015-02-15 2018-07-25
1 2016-05-11 2020-06-13 2014-03-07 2020-07-11
2 2016-02-23 Nat 2014-03-07 2019-06-08
3 2015-12-08 Nat 2014-03-07 2019-06-08
我正在尝试选择 date_to > death_date 或 date_to = Nat 的所有情况。
我试过以下代码:
df = df[(df['date_to'] > df['death_date']) | (df[df['DATE_TO'].isnull()])]
但我收到以下错误消息
'TypeError: cannot compare a dtyped [float64] array with a scalar of type [bool]'
而且我真的不知道如何解决这个问题。
解决方案
从你的问题
import pandas as pd
# ..... your data frame df ......
# considering that you have the following types
>>> df.dtypes
date_from datetime64[ns]
date_to datetime64[ns]
birth_date datetime64[ns]
death_date datetime64[ns]
dtype: object
df = df[(df['date_to'] > df['death_date']) | (df['date_to'].isnull())]
>>> df
date_from date_to birth_date death_date
0 2016-01-10 2019-06-05 2015-02-15 2018-07-25
2 2016-02-23 NaT 2014-03-07 2019-06-08
3 2015-12-08 NaT 2014-03-07 2019-06-08
如果 date_to 列不是日期时间,您可以像这样转换
df['date_to'] = df['date_to'].replace('Nat', pd.NaT)
df['date_to'] = pd.to_datetime(df['date_to'])
推荐阅读
- php - 如何在三重内连接表中显示适当的数据?
- ios - 自定义 UILongPressGestureRecognizer 无法使用 VoiceOver 的问题
- javascript - 我们能否在 oracle apex 中使全局页面上的区域不每次都加载(使其成为静态)。有没有办法限制它?
- reactjs - React Router v5 恢复滚动位置
- c# - 为什么在.Net C# 中从 MySql 读取后日期格式会发生变化?
- here-api - HERE API 直通航点
- python - Python 记录器忽略类中的 FileHandler 和 StreamHandler 级别
- gmail-addons - 如何发布 Google Docs 插件以便只有我的 G-Suite 中的人可以安装它?
- c# - 如何在我的实体上下文中直接访问我的 Auth0 令牌?
- python - Slack 通知不会在自定义标签上触发