Mam dwie kolumny StartTime
i EndTime
, muszę wybrać wydarzenia, które mają miejsce między 7-9 a 18-20. Do tej pory próbowałem:
+------------+--------------------------------+-------------------------------+
| | StartTime | EndTime |
+------------+--------------------------------+-------------------------------+
| 25 | 2018-05-17 11:52:21.769491600 | 2018-05-17 23:08:35.731376400 |
| 32 | 2018-05-19 14:22:24.141359000 | 2018-05-19 18:37:04.003643800 |
| 42 | 2018-05-22 08:25:01.015975500 | 2018-05-22 22:32:34.249869500 |
| 43 | 2018-05-22 08:46:06.187427200 | 2018-05-22 21:29:17.397438000 |
| 44 | 2018-05-22 13:38:37.289871700 | 2018-05-22 18:38:36.498623500 |
+------------+--------------------------------+-------------------------------+
Wyodrębniłem godziny z danych i wykorzystałem je do obliczenia następnych
df = df[((df['start_hr']<=7) & (df['end_hr']>=9)) | ((df['start_hr']<=18) & (df['end_hr']>=20))]
Czy istnieje bardziej dokładna i szybsza alternatywa?
2 odpowiedzi
Zwiększy to na chwilę zużycie pamięci, ale możesz zrobić coś takiego, w którym utworzysz dwie kolumny tymczasowe i użyjesz na nich "df.query". Pamiętaj, aby później usunąć kolumny.
df = df.assign(start_hr=df.start_hr.dt.hour, end_hr=df.end_hr.dt.hour)
df.query('(start_hr <= 7 and end_hr >=9) or (start_hr <= 18 and end_hr >=20) ')
Możesz użyć tego:
df['start_hr'] = pd.to_datetime(df['start_hr'])
df['end_hr'] = pd.to_datetime(df['end_hr'])
df['start_hr_day'] = df['start_hr'].dt.day
df['end_hr_day'] = df['start_hr'].dt.day
df.loc[((df['start_hr_day']<=7) & (df['end_hr_day']>=9))|((df['start_hr_day']<=18) & (df['end_hr_day']>=20))]
Podobne pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.