我有一个如下数据框:
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
如何应用该过滤器?
答案 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