Jak filtrowanie kolumny datetime godzinami przedziale (kilka godzin) w pand

głosy
0

Mam dataframe jak następuje:

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

Teraz muszę tylko wiersze, w których godzina jest między 12:00 a 18:00. To byłoby:

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

W jaki sposób można zastosować ten filtr?

Utwórz 10/10/2019 o 00:55
źródło użytkownik
W innych językach...                            


2 odpowiedzi

głosy
1

Zakładam, że nie chcesz zmieniać kolumny datetimecolumnformatu, więc przekonwertować go do datetime i przypisać s. Odejmij sod swojego floor('D')uzyskać tylko część czasu i porównać je between, aby stworzyć logiczną maskę m. Wreszcie, krojenie dfkorzystaniam

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
Odpowiedział 10/10/2019 o 01:23
źródło użytkownik

głosy
0

Można zrobić:

df[(df['datetimecolumn'] > '12:00') & (df['datetimecolumn'] < '18:00')]
Odpowiedział 10/10/2019 o 01:00
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more