Come filtraggio colonna datetime per l'intervallo di ore (poche ore) in panda

voti
0

Ho un dataframe come la seguente:

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

Ora ho bisogno solo le righe in cui l'ora è 12:00-18:00. Sarebbe:

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

Come posso applicare tale filtro?

È pubblicato 10/10/2019 alle 00:55
fonte dall'utente
In altre lingue...                            


2 risposte

voti
1

Presumo che non si vuole cambiare colonna di datetimecolumnformato, in modo da convertirlo in datetime e assegnare s. Sottrarre sdalla sua floor('D')per ottenere solo parte di tempo e confrontarli con betweenper creare una maschera booleano m. Infine, affettare dfusandom

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
Risposto il 10/10/2019 a 01:23
fonte dall'utente

voti
0

Può fare:

df[(df['datetimecolumn'] > '12:00') & (df['datetimecolumn'] < '18:00')]
Risposto il 10/10/2019 a 01:00
fonte dall'utente

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