【问题标题】:changing of object into datetime format将对象更改为日期时间格式
【发布时间】:2019-10-04 23:39:48
【问题描述】:

我目前正在通过在 python 中导入来处理谷歌工作表。当我导入工作表时,它是对象格式,后来我转换为浮点数,但我尝试更改日期列的格式,然后它给了我一个错误。

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

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')

【问题讨论】:

  • 你也没有平均电压!

标签: pandas datetime time timestamp


【解决方案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/

【讨论】:

    【解决方案2】:

    我只测试了:

    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') 
    

    实现更好的格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 2020-01-30
      • 2021-02-06
      • 2015-06-14
      • 2017-01-25
      • 2022-09-28
      相关资源
      最近更新 更多