日期时间变量为空

Posted

技术标签:

【中文标题】日期时间变量为空【英文标题】:DateTime variable is empty 【发布时间】:2020-03-29 03:37:02 【问题描述】:

我想要一个空值的 if 条件。您可以在下面看到我的变量“endedAt”,它是一个 DateTime 变量。但是,它有一些空白值,其值为“NaT”。现在我想为这些空值创建一个条件。但我不知道如何引用它们。我尝试了以下方法:

1. if(df.iloc[i]['endedAt'] == 'NaT'):
2. if(df.iloc[i]['endedAt'] == ''):

但是它们都不起作用,并且我在 if 语句中的内容没有执行。

示例数据:

结束时间

NaT

2018-11-20 01:10:43

2018-11-19 20:21:57

2018-11-19 20:06:23

2018-11-19 04:05:36

【问题讨论】:

你可以使用类似if pd.isnull(d) for d in df1['endedAt']的命令 如果要比较两个字符串('NaT'),请使用“if a in b”。在第二种情况下,它可能有空间,我建议使用 strip() 函数。还要检查您获得的价值和价值类型。返回值可能不是字符串类型。 谢谢 Yogesh 成功了,你能解释一下你在做什么吗? 【参考方案1】:

你可以像if df.iloc[i]['endedAt'] is pd.NaT:一样使用pd.Nat

import pandas as pd

dt = pd.to_datetime([
        None,
        pd.Timestamp("2018-11-20 01:10:43"),
        pd.Timestamp("2018-11-19 20:21:57"),
        pd.Timestamp("2018-11-19 20:06:23"),
        pd.Timestamp("2018-11-19 04:05:36"),
        ])
df = pd.DataFrame("endedAt": dt)

print(df)

for i in range(len(df)):
    if df.iloc[i]['endedAt'] is pd.NaT:
        print("\nNaT row index:", i)

输出:

              endedAt
0                 NaT
1 2018-11-20 01:10:43
2 2018-11-19 20:21:57
3 2018-11-19 20:06:23
4 2018-11-19 04:05:36

NaT row index: 0

【讨论】:

以上是关于日期时间变量为空的主要内容,如果未能解决你的问题,请参考以下文章

datax日期为空报错

ASP SQL中,查询条件为日期字段的一个时间段,或者日期字段为空,怎么写查询

将非空日期时间转换为空。 C#

使用 VB6 将 DAO 日期时间字段重置为空

VB6.0中,日期时间控件不允许为空时,采用文本框与日期时间控件相互替换赋值(解决方案)

需要在具有开始和结束日期的选定日期之间按天计算活跃客户列表(也为空)