【问题标题】:Selecting date and time within a dataframe in pandas在 pandas 的数据框中选择日期和时间
【发布时间】:2018-08-15 07:51:46
【问题描述】:

我有一个看起来像这样的数据框

    Date            MBs     GBs
0   2018-08-14 20:10    32.00 MB    0.00 GB
1   2018-08-14 20:05    4.00 MB     0.00 GB
2   2018-08-14 20:00    1000.99 MB  1.23 GB

我已经这样做了:

na_aus['Date'] =  pd.to_datetime(na_aus['Date'], format='%Y-%m-%d %H:%M:%S')

但是当我尝试像这样做一个简单的过滤器时:

na_aus.loc['2018-08-14 19:50' : '2018-08-14 20:10'] 

我得到的是:

Date            MBs     GBs

没有返回数据。

我尝试关注这个Select dataframe rows between two dates,但它不起作用

【问题讨论】:

标签: python pandas dataframe


【解决方案1】:

使用.between:

na_aus.loc[na_aus['Date'].between('2018-08-14 19:50','2018-08-14 20:10')]

在您的情况下,所有行都满足要求:

                 Date         MBs      GBs
0 2018-08-14 20:10:00    32.00 MB  0.00 GB
1 2018-08-14 20:05:00     4.00 MB  0.00 GB
2 2018-08-14 20:00:00  1000.99 MB  1.23 GB

但如果您不希望它包含边界,请设置inclusive=False。这意味着因为第 0 行是您范围的确切边界,所以它不会被包括在内:

>>> na_aus.loc[na_aus['Date'].between('2018-08-14 19:50', '2018-08-14 20:10',
                                      inclusive=False)]


                 Date         MBs      GBs
1 2018-08-14 20:05:00     4.00 MB  0.00 GB
2 2018-08-14 20:00:00  1000.99 MB  1.23 GB

【讨论】:

  • 很高兴能帮上忙!
  • 实际上您可以为多个范围添加示例。例如,如果您想要 2018-08-13 19:50','2018-08-14 20:10 slice 和 2018-08-12 19:50','2018-08-12 20:10 例如但是不是其余的,所以我只有一个我想要的范围的 DF,这可能吗?
  • 使用|运营商..df.loc[df.between(a, b) | df.between(c, d)]
  • 我正想说和@RafaelC一样
猜你喜欢
  • 1970-01-01
  • 2019-07-14
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
  • 2013-07-18
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多