Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

pandas date serie selection d'index

+1 vote

Pour une série de temps pandas classique (avec la date en index) :

In : ts.head()
Out: 
    2016-08-22 00:00:00      0.000000
    2016-08-22 00:05:00      0.088889
    2016-08-22 00:10:00      0.177778
    2016-08-22 00:15:00      0.266667
    2016-08-22 00:20:00      0.355556

Existe t-il un moyen prévu par pandas pour sélectionner l'index qui va bien, en fonction du timestamp courant ?
Par exemple : le timestamp "2016-08-22 00:12:56" retournerai : 0.177778

demandé 22-Aou-2016 par erms (126 points)
reclassée 30-Aou-2016 par max

2 Réponses

0 votes
 
Meilleure réponse

En relisant la doc de Pandas je n'ai pas trouvé de fonctionnalité qui réponde à ce problème.
Du coup pour contourner le problème j'ai extrapolé la série histoire d'avoir tout les timestamp de représenté dans la série.

In 1: upscaled_ts = ts.resample('S').interpolate()
In 2: upscaled_pserie.head()
Out: 
    2016-08-22 00:00:00    0.000000
    2016-08-22 00:00:01    0.000296
    2016-08-22 00:00:02    0.000593
    2016-08-22 00:00:03    0.000889
    2016-08-22 00:00:04    0.001185
répondu 23-Aou-2016 par erms (126 points)
sélectionné 24-Aou-2016 par erms

Tu devrais accepter la réponse si elle répond à ta question.

0 votes

En me basant sur le bouquin, je vois deux solutions.

réindexation

Il est possible d'indexer une frame en se basant sur une série :

data = Series(ts['number'], index=ts['date'])
print(data["2016-08-22 00:12:56"])  # => 0.177778 

Filtrage

L'autre solution, résistante au doublon mais plus chère en cas de recherche multiple:

print(ts['date' == "2016-08-22 00:12:56"])  # => 0.177778 

'number' et 'date' sont les noms des champs de la série.

répondu 23-Aou-2016 par lucas (2,340 points)

Le but de l'exercice est de requêter la serie de temps en fonction d'un timestamp courant, du coup cela me semble difficile de réindexer tous les timestamp possible.
Mais pourtant la solution que j'ai choisis n'est pas si loin de la tienne et on reste dans l'idée d'ajouter chaque index potentiellement demandable.
Pour ce faire je suis passé par l'extrapolation de la série sur une fréquence à la seconde (cf ma réponse)

...