Как отфильтровать столбец datetime для интервала часов (только часы) в пандах - PullRequest
0 голосов
/ 10 октября 2019

У меня есть датафрейм, подобный следующему:

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 ]

1 голос
/ 10 октября 2019

Я предполагаю, что вы не хотите изменять формат столбца 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
1 голос
/ 10 октября 2019

Можно сделать:

df[(df['datetimecolumn'] > '12:00') & (df['datetimecolumn'] < '18:00')]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...