【问题标题】:A strange behaviour regarding filtering a dataframe based on the datatime column关于基于日期时间列过滤数据框的奇怪行为
【发布时间】:2017-07-23 21:21:54
【问题描述】:

我对下面的代码有一个奇怪的情况。如您所见,似乎没有 timestamp_day 值小于以下代码中指示值的数据:

print myDF.shape
> (447609, 20)

print myDF[myDF['timestamp_day'] < timedelta(2014, 7, 26, 2, 0)].shape
> (0, 20)

但是,当我检查 timestamp_day 的最小值(见下文)时,我发现上面的代码应该返回一些行。

myDF['timestamp_day'].min()
> datetime.datetime(2014, 5, 21, 12, 0)

有人知道为什么会这样吗?

【问题讨论】:

  • hmm,timedeltadatetime 对象不一样。 from datetime import datetime, timedelta ; d = datetime(1970, 1, 1) ; t = timedelta(1970, 1, 1) ; print(d == t) ; # False

标签: python pandas datetime dataframe timedelta


【解决方案1】:

尝试提取一些实践值来测试你的不等式是否有意义。

datetime.datetime(2014, 5, 21, 12, 0) < timedelta(2014, 7, 26, 2, 0)
TypeError: unorderable types: datetime.datetime() < datetime.timedelta()

您是否尝试过仅使用 datetime.datetime 进行比较?

datetime.datetime(2014, 5, 21, 12, 0) < datetime.datetime(2014, 7, 26, 2, 0)
True

【讨论】:

    猜你喜欢
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 2014-11-23
    • 2020-07-10
    • 2012-12-16
    • 1970-01-01
    • 2015-10-28
    相关资源
    最近更新 更多