将对象更改为日期时间格式

时间:2019-05-17 15:50:30

标签: pandas datetime time timestamp

我目前正在通过使用python导入工作在google工作表上。当我导入工作表时它是对象格式,后来我转换为float,但是我尝试更改Date列的格式然后它给了我一个错误。 / p>

以下是我必须处理的数据框

df.head()
Out[21]: 
                  Date Avg_Energy Avg_Voltage
1  24-06-2018 12-50-02    2452.93            
2  24-06-2018 12-50-03    2452.98      228.03
3  24-06-2018 12-50-04    2453.04       228.7
4  24-06-2018 12-50-05     2453.1       228.4
5  24-06-2018 12-50-06    2453.16      228.74

我已应用以下代码将其更改为日期时间格式

df['DateTime'] = pd.to_datetime(df['Date'])

我向我提供以下错误

df2['DateTime'] = pd.to_datetime(df2['Date'])
Traceback (most recent call last):

  File "<ipython-input-22-0636e9d0e511>", line 1, in <module>
    df2['DateTime'] = pd.to_datetime(df2['Date'])

  File "C:\Users\Hussnain\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py", line 451, in to_datetime
    values = _convert_listlike(arg._values, True, format)

  File "C:\Users\Hussnain\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py", line 380, in _convert_listlike
    raise e

  File "C:\Users\Hussnain\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py", line 368, in _convert_listlike
    require_iso8601=require_iso8601

  File "pandas\_libs\tslib.pyx", line 492, in pandas._libs.tslib.array_to_datetime

  File "pandas\_libs\tslib.pyx", line 739, in pandas._libs.tslib.array_to_datetime

  File "pandas\_libs\tslib.pyx", line 733, in pandas._libs.tslib.array_to_datetime

  File "pandas\_libs\tslibs\parsing.pyx", line 99, in pandas._libs.tslibs.parsing.parse_datetime_string

  File "C:\Users\Hussnain\Anaconda3\lib\site-packages\dateutil\parser\_parser.py", line 1356, in parse
    return DEFAULTPARSER.parse(timestr, **kwargs)

  File "C:\Users\Hussnain\Anaconda3\lib\site-packages\dateutil\parser\_parser.py", line 648, in parse
    raise ValueError("Unknown string format:", timestr)

ValueError: ('Unknown string format:', '24-06-2018 12-50-100')

2 个答案:

答案 0 :(得分:1)

您使用的是非正统的日期时间格式。使用format参数。

pd.to_datetime(df.Date, format='%d-%m-%Y %H-%M-%S')

0   2018-06-24 12:50:02
1   2018-06-24 12:50:03
2   2018-06-24 12:50:04
3   2018-06-24 12:50:05
4   2018-06-24 12:50:06
Name: Date, dtype: datetime64[ns]

有关更多信息,请参见http://strftime.org/

答案 1 :(得分:0)

最后,我只测试了:

pd.to_datetime(df.Date)

它奏效了。似乎您没有第一个Avg_Voltage值。


                  Date   Energy    Voltage
1  24-06-2018 12-50-02  2452.93  322323.00
2  24-06-2018 12-50-03  2452.98     228.03
3  24-06-2018 12-50-04  2453.04     228.70
4  24-06-2018 12-50-05  2453.10     228.40
5  24-06-2018 12-50-06  2453.16     228.74

1    2018-06-24 12:00:00-02:00
2    2018-06-24 12:00:00-03:00
3    2018-06-24 12:00:00-04:00
4    2018-06-24 12:00:00-05:00
5    2018-06-24 12:00:00-06:00
Name: Date, dtype: object

您可以使用:

pd.to_datetime(df.Date).dt.strftime('%Y-%m-%d  %H:%M:%S') 

以获得更好的格式。