高效的 Dataframe 列(对象)到 DateTime 的转换

Efficient Dataframe column (Object) to DateTime conversion

我正在尝试创建一个新列,其中包含日期输入列的数据作为日期时间。 我也很乐意接受更改日期列的数据类型,但我不确定该怎么做。

我目前正在使用 DateTime = dd.to_datetime。我正在从 CSV 导入并让 dask 决定数据类型。

我对此还很陌生,所以我尝试了一些 Whosebug 的答案,但我只是摸索着,得到的错误比答案还多。

我输入的日期字符串是,例如:

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   |
+-----------+------------------+-------------+--------+

试试这个,

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

错误忽略将 return Nan to_datetime 失败..

更多详情请访问https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.to_datetime.html