Панды to_datetime не форматируются, как ожидалось - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть фрейм данных со столбцом «Дата» с типом данных datetime64.Значения в формате ГГГГ-ММ-ДД.Как я могу преобразовать его в формат ГГГГ-ММ и использовать его как сам объект datetime64.Я попытался преобразовать объект datetime в строку в формате YYYY-MM, а затем обратно в объект datetime в формате YYYY-MM, но он не сработал.

Исходные данные = 1988-01-01.

Преобразование объекта времени данных в строку в формате YY-MM

df['Date']=df['Date'].dt.strftime('%Y-%m')

Это сработало, как и ожидалось, значение моего столбца стало

1988-01

Преобразование строки обратнообъект datetime в формате Ym

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

Я ожидал столбец Date в формате YYYY-MM, но он стал форматом YYYY-MM-DD.

1988-01-01

Не могли бы вы сообщить мне, если я что-то упустил.

Спасибо

1 Ответ

0 голосов
/ 26 апреля 2018

Это ожидаемое поведение , в datetime требуются аргументы года, месяца и дня.

Если хотите удалить days нужен месячный период на to_period:

df['Date'] = df['Date'].dt.to_period('M')

df['Date'] = pd.to_datetime(df['Date'],format= '%Y-%m').dt.to_period('M')

Образец:

df = pd.DataFrame({'Date':pd.to_datetime(['1988-01-01','1999-01-15'])})
print (df)
        Date
0 1988-01-01
1 1999-01-15

df['Date'] = df['Date'].dt.to_period('M')
print (df)
     Date
0 1988-01
1 1999-01
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...