Строка не содержит даты - PullRequest
0 голосов
/ 25 марта 2019

У меня есть DataFrame с этим столбцом:

Mi_Meteo['Time_Instant'].head():

0    2013/11/14 17:00
1    2013/11/14 18:00
2    2013/11/14 19:00
3    2013/11/14 20:00
4    2013/11/14 21:00
Name: Time_Instant, dtype: object

После некоторой проверки Это то, что я понял:

Mi_Meteo['Time_Instant'].value_counts():

2013/12/09 02:00    33
2013/12/01 22:00    33
2013/12/11 10:00    33
2013/12/05 09:00    33
.
.
.
.
2013/11/16 02:00    21
2013/11/07 10:00    11
2013/11/17 22:00    11
DateTIme            3

Итак, я чередовал его:

Mi_Meteo['Time_Instant'] = Mi_Meteo['Time_Instant'].str.rstrip('DateTIme')# Cause Otherwise I would get this Error When Converting : 'Unknown string format'

И затем я попытался преобразовать его:

Mi_Meteo['Time_Instant'] = pd.to_datetime(Mi_Meteo['Time_Instant'])

Но я получаю эту ошибку:

String does not contain a date.

Любое предложение будет высоко оценено, спасибо вам всем.

1 Ответ

0 голосов
/ 25 марта 2019

У меня проблемы с воспроизведением вашей ошибки, поэтому я не уверен, решит ли это проблему, которая возникла у вас. Если нет, попробуйте предоставить минимальный образец кода / данных, которые воспроизводят вашу ошибку.

Вот что я пытался воспроизвести в вашей ситуации:

lzt = ['2013/11/16 02:00 ',
       '2013/11/07 10:00 ',
       '2013/11/17 22:00 ',
       'DateTIme',
       'DateTIme',
       'DateTIme']
ser = pd.Series(lzt)
ser = ser.str.rstrip('DateTIme')
ser = pd.to_datetime(ser)

Но, как я уже сказал, у меня нет ошибок, поэтому либо у нас другая версия панд, либо что-то еще не так с вашими данными. С помощью rstrip оставьте пустые строковые данные:

0    2013/11/16 02:00 
1    2013/11/07 10:00 
2    2013/11/17 22:00 
3                     
4                     
5                     

, который для меня дает NaT (не время), когда я запускаю на нем pd.to_datetime:

Out[34]: 
0   2013-11-16 02:00:00
1   2013-11-07 10:00:00
2   2013-11-17 22:00:00
3                   NaT
4                   NaT
5                   NaT
dtype: datetime64[ns]

Я бы сказал, что лучше убрать все ненужные строки вместе:

ser = ser[ser != 'DateTIme']

Out[39]: 
0   2013-11-16 02:00:00
1   2013-11-07 10:00:00
2   2013-11-17 22:00:00
dtype: datetime64[ns]

Посмотрите, работает ли это, в противном случае, пожалуйста, дайте достаточно информации, чтобы воспроизвести ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...