Эффективное преобразование столбца DataFrame (Object) в DateTime - PullRequest
1 голос
/ 05 октября 2019

Я пытаюсь создать новый столбец , который содержит данные входного столбца Дата в качестве даты и времени. Я бы также с радостью согласился изменить тип данных столбца Дата , но я точно так же не уверен, как это сделать.

В настоящее время я использую DateTime = dd.to_datetime. Я импортирую из CSV и позволяю dask выбирать типы данных.

Я довольно новичок в этом, поэтому я попробовал несколько ответов stackoverflow, но я просто шарил и получал больше ошибок, чем ответов.

Моя строка ввода даты, например:

2019-20-09 04:00

Это то, что у меня сейчас есть,

import dask.dataframe as dd
import dask.multiprocessing
import dask.threaded
import pandas as pd

# Dataframes implement the Pandas API
import dask.dataframe as dd

ddf = dd.read_csv(r'C:\Users\i5-Desktop\Downloads\State_Weathergrids.csv')
print(ddf.describe(include='all'))
ddf['DateTime'] = dd.to_datetime(ddf['Date'], format='%y-%d-%m %H:%M')

Я получаю ошибку ниже. Я предполагаю, что последняя строка является наиболее релевантной частью , но я не могу понять, почему данный формат даты не соответствует указанному мной формату.

TypeError                                 Traceback (most recent call last)
~\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py in _convert_listlike_datetimes(arg, box, format, name, tz, unit, errors, infer_datetime_format, dayfirst, yearfirst, exact)
    290             try:
--> 291                 values, tz = conversion.datetime_to_datetime64(arg)
    292                 return DatetimeIndex._simple_new(values, name=name, tz=tz)

pandas/_libs/tslibs/conversion.pyx in pandas._libs.tslibs.conversion.datetime_to_datetime64()

TypeError: Unrecognized value type: <class 'str'>

During handling of the above exception, another exception occurred:
....
ValueError: time data '2019-20-09 04:00' does not match format '%y-%d-%m %H:%M' (match)

Текущие свойства фрейма данных с использованием описания:

Dask DataFrame Structure:
              Location    Date Temperature       RH  
npartitions=1                                                                                           
               float64  object     float64  float64  
                   ...     ...         ...      ...      
Dask Name: describe, 971 tasks

Пример данных

+-----------+------------------+-------------+--------+
|  Location |       Date       | Temperature |   RH   |
+-----------+------------------+-------------+--------+
|      1075 | 2019-20-09 04:00 | 6.8         | 99.3   |
|      1075 | 2019-20-09 05:00 | 6.4         | 100.0  |
|      1075 | 2019-20-09 06:00 | 6.7         | 99.3   |
|      1075 | 2019-20-09 07:00 | 8.6         | 95.4   |
|      1075 | 2019-20-09 08:00 | 12.2        | 76.0   |
+-----------+------------------+-------------+--------+

1 Ответ

1 голос
/ 05 октября 2019

Попробуйте это,

['DateTime'] = dd.to_datetime(ddf['Date'], format='%Y-%d-%m %H:%M', errors = 'ignore')

, игнорирование ошибок вернет Nan, когда ошибка to_datetime завершится ..

Для более подробной информации посетите https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.to_datetime.html

...