【问题标题】:searching pandas for value greater than a number在 Pandas 中搜索大于数字的值
【发布时间】:2020-01-27 14:30:12
【问题描述】:

我有以下数据:

    toggle_day  Diff
Date        
2000-01-04  True    NaT
2000-01-11  True    7 days
2000-01-24  True    13 days
2000-01-28  True    4 days
2000-02-09  True    12 days
... ... ...
2019-08-14  True    2 days
2019-08-23  True    9 days
2019-10-01  True    39 days
2019-10-02  True    1 days
2019-10-08  True    6 days
677 rows × 2 columns

我想查看Diff 大于 20 天的日期。为此,我做了这样的事情: df1[df1.diff > 20 days] 这是错误的,我想因为我需要在日期时间告诉它days。我试过df1[df1.diff > datetime.datetime(20)],但这也不起作用:

TypeError:函数缺少必需的参数“月”(位置 2)

我如何在Diff 中搜索大于数字的天数。

【问题讨论】:

    标签: python pandas datetime


    【解决方案1】:

    第一个想法是按时间增量进行比较:

    df[df['Diff'] > pd.Timedelta(1, 'd')]
    

    或者您可以通过 Series.dt.days 将 timedeltas 转换为天数并按数字进行比较:

    df[df['Diff'].dt.days > 1]
    

    【讨论】:

    • 第二个有效,我想我明白了,第一个返回错误TypeError: Cannot compare type Timedelta with type method
    • @newcoder - 我认为如果使用['col name'] 它应该可以工作,这里是df['Diff']
    • @newcoder - 问题应该是如果列名是diff,它与方法Series.diff冲突,所以df.diff引发错误
    • 你说得对,我从diff 更改为Diff 并且成功了!
    猜你喜欢
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 2018-04-09
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 2017-07-27
    相关资源
    最近更新 更多