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

2024-05-28 19:06:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有如下数据帧:

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

我怎样才能应用那个过滤器?你知道吗


Tags: 数据过滤器时间datetimecolumnvaluecolumn
2条回答

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

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

我们可以做:

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

相关问题 更多 >

    热门问题