Код должен выбирать строки между временем начала и временем окончания (время окончания - время начала + 30 минут). Но он возвращает только пустой фрейм данных. Есть ли способ выбрать строки в столбце df['datetime']
только время прохождения?
import pandas as pd
import time
from datetime import datetime, date, time, timedelta
df = pd.read_csv('selcted_data.txt', sep='\t')
Программа использует данные, которые выглядят так:
print(df.head())
datetime mean std sum 1 2 3 ... 28 29 30 31 32 33
0 2017-07-12 08:01:00 0.935 1.181 29 0 0 0 ... 2 2 0 0 1 1
1 2017-07-12 08:02:00 1.161 1.214 36 0 0 0 ... 2 0 0 0 4 3
2 2017-07-12 08:03:00 1.097 1.326 34 0 0 0 ... 0 4 0 0 4 2
3 2017-07-12 08:04:00 0.903 1.044 28 0 0 0 ... 1 1 0 0 3 1
4 2017-07-12 08:05:00 1.065 1.153 33 0 0 0 ... 1 0 0 0 1 2
Здесь введено start_time
используется для создания end_time
, что на 30 минут позже времени начала:
start= '10:21'
start_time = datetime.strptime(start, '%H:%M')
end_time = start_time + timedelta(minutes=30)
start_time = datetime.strftime(start_time, '%H:%M:%S')
end_time = datetime.strftime(end_time, '%H:%M:%S')
print(start_time)
print(end_time)
#10:21:00
#11:01:00
start_time
и end_time
передаются для выбора строк:
df['datetime'] = pd.to_datetime(df['datetime'])
mask = (df['datetime'] >= start_time) & (df['datetime'] <= end_time)
df = df.loc[mask]
df = df.set_index('datetime')
df = df.between_time(start_time, end_time)
Код возвращает пустой фрейм данных:
print(df.head())
Empty DataFrame
Columns: [datetime, mean, std, sum, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34]