0
votes

Pandas.Series Comment retourner l'index de la date la plus proche avant la date de saisie

J'ai un pandas.series s comme ceci xxx

Notez que certaines de ses dates sont manquantes. Je veux dire s.index ne contient pas 2008-02-23 , 2008-02-24 , 2008-02-27 , 2008-03-01 et 2008-03-02 .

Comment puis-je implémenter une fonction qui a les entrées suivantes et sorties: xxx

Cette fonction émet l'index de la date de S . Si la date n'est introuvable dans s , il renvoie l'index de la date la plus proche avant la date d'entrée.

Je sais que s.index.get_loc (pd. Horodatage ('2008-02-20 00:00:00')) peut retourner 2 , qui est l'index du 2008-02-20 de < code> s.index . Mais cette méthode ne fonctionne pas lorsque son entrée est '2008-02-24 00h00:00' .


0 commentaires

3 Réponses :


0
votes

Vous pouvez utiliser numpy.searchsorted ( https://docs.scipy.org/doc/numpy /reference/generated/numpy.searchsorted.html ) xxx

Vous devrez peut-être modifier les paramètres de la fonction ou d'ajuster vos résultats un peu pour correspondre exactement à ce que vous voulez.


0 commentaires

0
votes

Redémarrez la date dont vous avez besoin pour l'index ( date dans s ), filtre uniquement des numéros inférieurs ou égaux à zéro ) et utilisez argmax pour obtenir l'index: xxx

note :

Assurez-vous que votre index est trié et est un objet DateTime: < / p> xxx


0 commentaires

0
votes

Créer une colonne temporaire qui fonctionne de 0 à la fin du DF, ... 0,1,2,3, ...

df.asof(test.input)
            date    temp
input       
2008-02-22  21.35   4.0
2008-02-23  21.35   4.0
2008-02-24  21.35   4.0
2008-02-25  22.80   5.0
2008-02-28  23.20   6.0


0 commentaires