Les Pandas objet-liste datetime serie datetime index

0

La question

Je suis à l'aide de champs de paramètre sur le python-elasticsearch api pour récupérer des données à partir d'elasticsearch tentative d'analyser la @timestamp au format iso pour une utilisation dans une pandas dataframe.

fields = \
    [{
      "field": "@timestamp",
      "format": "strict_date_optional_time"
    }]

Par défaut elasticsearch retourner les résultats sur le tableau-format de liste comme vu dans la doc:

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-fields.html

The fields response always returns an array of values for each field, even when there is a single value in the _source. 

À cause de cette résultant dataframe contient un objet de la liste de série qui ne peut pas être analysée pour un datetime série par les méthodes classiques.

Name: fields.@timestamp, Length: 18707, dtype: object
0       [2021-11-04T01:30:00.263Z]
1       [2021-11-04T01:30:00.385Z]
2       [2021-11-04T01:30:00.406Z]
3       [2021-11-04T01:30:00.996Z]
4       [2021-11-04T01:30:01.001Z]
                   ...            
8368    [2021-11-04T02:00:00.846Z]
8369    [2021-11-04T02:00:00.894Z]
8370    [2021-11-04T02:00:00.895Z]
8371    [2021-11-04T02:00:00.984Z]
8372    [2021-11-04T02:00:00.988Z]

Lorsque vous essayez d'analyser la série datetime série:

pd.to_datetime(["fields.@timestamp"])

Le résultat dans:

TypeError: <class 'list'> is not convertible to datetime

Mon cas d'utilisation nécessite beaucoup de datetime les formats et les champs de paramètre convient très bien interrogation de plusieurs formats, mais le cotées objet datetime chaîne de difficile les choses.

dataframe datetime elasticsearch pandas
2021-11-18 16:37:23
1

La meilleure réponse

1

Le problème ici est que les éléments de fields.@timestamp sont en fait des listes.

De sorte que vous pouvez faire :

fields['timestamp'] = fields['timestamp'].str[0]

pour extraire la date à partir de la liste, et puis utiliser la mp.to_datetime :

fields['timestamp'] = pd.to_datetime(fields['timestamp'])
2021-11-18 17:01:03

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................