Como filtrar coluna de data e hora por horas intervalo (poucas horas) em pandas

votos
0

Eu tenho uma trama de dados como o seguinte:

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

Agora eu só precisa as linhas em que a hora é 12:00-18:00. Isso seria:

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

Como posso aplicar esse filtro?

Publicado 10/10/2019 em 00:55
fonte usuário
Em outras línguas...                            


2 respostas

votos
1

Eu suponho que você não deseja alterar coluna datetimecolumnformato, para convertê-lo para datetime e atribuir a s. Subtraia sdo seu floor('D')para obter apenas parte do tempo e compará-los com betweenpara criar uma máscara booleano m. Finalmente, cortando 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
Respondeu 10/10/2019 em 01:23
fonte usuário

votos
0

Pode fazer:

df[(df['datetimecolumn'] > '12:00') & (df['datetimecolumn'] < '18:00')]
Respondeu 10/10/2019 em 01:00
fonte usuário

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