Ошибка преобразования типа данных с плавающей точкой в ​​формат даты и времени - PullRequest
0 голосов
/ 10 сентября 2018

Я хотел бы преобразовать тип данных с плавающей запятой ниже в формат даты и времени:

df

         Date
0         NaN
1         NaN
2    201708.0
4    201709.0
5    201700.0
6    201600.0
Name: Cred_Act_LstPostDt_U324123, dtype: float64

pd.to_datetime (df ['Date'], format ='% Y% m.0 ')

ValueError: данные времени 201700.0 не соответствуют формату "% Y% m.0" (совпадение)

Какможно ли преобразовать эти строки без информации о месяце как yyyy01 по умолчанию?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Вы можете использовать pd.Series.str.replace для очистки данных за месяц:

s = [x.replace('00.0', '01.0') for x in df['Date'].astype(str)]
df['Date'] = pd.to_datetime(s, format='%Y%m.0', errors='coerce')

print(df)

        Date
0        NaT
1        NaT
2 2017-08-01
4 2017-09-01
5 2017-01-01
6 2016-01-01
0 голосов
/ 10 сентября 2018

Создайте строку, содержащую число с плавающей точкой, используя .asType (str), затем разделите строку на четвертый символ и с помощью cat вставьте дефис. Тогда вы можете использовать format = '% Y% m.

Тем не менее, это может не получиться, если вы попытаетесь использовать неправильную нумерацию месяца, например, месяц 00

string = df['Date'].astype(str)
s = pd.Series([string[:4], '-',string[4:6])
date = s.str.cat(sep=',')
pd.to_datetime(date.astype(str),format='%Y%m')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...