如何在熊猫中的小时间隔(仅几小时)中过滤datetime列

时间:2019-10-09 21:55:51

标签: python pandas dataframe datetime

我有一个如下数据框:

datetimecolumn      valuecolumn
2017-01-03 01:00    17
2017-01-04 02:55    4
2017-01-04 05:55    4
2017-01-04 12:55    9
2017-01-04 16:55    88
2017-01-05 17:53    1
2017-01-06 10:22    74
2017-01-06 15:22    111

现在,我只需要小时在12:00至18:00之间的行。 那应该是:

datetimecolumn      valuecolumn
2017-01-04 12:55    9
2017-01-04 16:55    88
2017-01-05 17:53    1
2017-01-06 15:22    111

如何应用该过滤器?

2 个答案:

答案 0 :(得分:1)

可以:

df[(df['datetimecolumn'] > '12:00') & (df['datetimecolumn'] < '18:00')]

答案 1 :(得分:1)

我假设您不想更改列datetimecolumn的格式,因此将其转换为日期时间并分配给s。从其s中减去floor('D')仅获得时间部分,并将其与between进行比较以创建布尔掩码m。最后,使用df

切片m
s = pd.to_datetime(df.datetimecolumn)
m = (s - s.dt.floor('D')).between(pd.Timedelta('12:00:00'), pd.Timedelta('18:00:00'))

df.loc[m]

Out[190]:
     datetimecolumn  valuecolumn
3  2017-01-04 12:55            9
4  2017-01-04 16:55           88
5  2017-01-05 17:53            1
7  2017-01-06 15:22          111