【问题标题】:Create a boolean dataframe based on the difference between two datetimes根据两个日期时间之间的差异创建一个布尔数据框
【发布时间】:2019-06-07 05:33:04
【问题描述】:

我有一个名为“gaps”的 pandas 数据框,如下所示:

Index    Gap in days
0        2 days 00:00:00
1        8 days 00:00:00
2        4 days 00:00:00
3        15 days 00:00:00
...
201      21 days 00:00:00

日期格式已转换为标准日期时间格式。我想创建一个简单的布尔数据框,如果天数超过 7 天,则返回 TRUE,否则返回 FALSE。

我最初的尝试很简单:

morethan7days = gaps > 7

我得到了错误:

TypeError: invalid type comparison

有人知道我做错了什么以及如何解决吗?

【问题讨论】:

    标签: python pandas datetime boolean


    【解决方案1】:

    没关系,我通过反复试验得到了答案:

    morethan7days = gaps > datetime.timedelta(days=7)
    

    【讨论】:

      【解决方案2】:

      您可以将timedeltas 转换为Series.dt.days 的天数,然后通过整数进行比较:

      gaps = df['Gap in days']
      morethan7days = gaps.dt.days > 7
      print (morethan7days)
      0    False
      1     True
      2    False
      3     True
      4     True
      Name: Gap in days, dtype: bool
      

      另一种解决方案是与pandas.Timedelta比较:

      gaps = df['Gap in days']
      morethan7days = gaps > pd.Timedelta(7, unit='d')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-01-12
        • 2023-03-24
        • 1970-01-01
        • 2020-08-05
        • 1970-01-01
        • 1970-01-01
        • 2022-11-27
        相关资源
        最近更新 更多