изменение объекта в формат даты и времени - PullRequest
2 голосов
/ 17 мая 2019

В настоящее время я работаю над листом Google, импортируя его в python. Когда я импортирую лист, он был в формате объекта, а затем преобразован в float, но я пытаюсь изменить формат столбца Date, после чего возникает ошибка.

Ниже приводится датафрейм, на котором я должен работать на

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 ]

1 голос
/ 17 мая 2019

У вас неортодоксальный формат даты и времени. Используйте аргумент 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/ для получения дополнительной информации.

0 голосов
/ 17 мая 2019

С моей стороны я протестировал только с:

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

для достижения лучшего формата.

...