Pandalar objet-datetime dizinini datetime serisine listele

0

Soru

Python-elasticsearch apı'sindeki fields parametresini, elasticsearch'ten @timestamp'ı ıso biçiminde ayrıştırmaya çalışan bazı verileri almak için bir pandalar veri çerçevesinde kullanmak üzere kullanıyorum.

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

Varsayılan olarak elasticsearch, sonuçları doc'da görüldüğü gibi dizi listesi biçiminde döndürür:

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. 

Bu nedenle ortaya çıkan dataframe, geleneksel yöntemlerle bir datetime serisine ayrıştırılamayan bir nesne listesi serisi içerir.

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]

Seriyi datetime serisine ayrıştırmaya çalışırken:

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

Bu sonuç:

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

Kullanım durumum çok sayıda datetime formatı gerektiriyor ve fields parametresi birden çok formatı sorgulamak için çok uygun, ancak listelenen nesne datetime dizesi işleri zorlaştırıyor.

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

En iyi cevabı

1

Buradaki sorun, alan öğeleridir.@timestamp aslında listelerdir.

Yani yapabilirsin :

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

listeden tarihi çıkarmak için, ve sonra pd.to_datetime kullanın :

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

Diğer dillerde

Bu sayfa diğer dillerde

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