2015-03-26 6 views
1

У меня есть datetime.date от 2016-12-27 или datetime.date (2016, 12, 27). Это затрагивает несколько дат, например: 2016-12-27, 2016-11-27.Коррекция даты Python/PANDAS в DataFrame

Как я могу заменить 27 только 01, не изменяя ничего другого? Я пробовал такие вещи, как:

df.DATE.replace(27, 01) 
df.DATE.replace('-27', '-01') 
df.DATE.replace(', 27', ', 01') 

Панда Версия 16.0 Python 2.7

Спасибо за любую помощь!

ответ

0

Используйте атрибут datetime для фильтрации на дату, а затем apply функция для замены только день компонента:

In [12]: 

df = pd.DataFrame({'date':[dt.datetime(2016,12,27), dt.datetime(2016,11,27), dt.datetime(2014, 5,3)]}) 
df 
Out[12]: 
     date 
0 2016-12-27 
1 2016-11-27 
2 2014-05-03 
In [14]: 

df.loc[df.date.dt.day == 27, 'date'] = df.date.apply(lambda x: x.replace(day=1)) 
df 
Out[14]: 
     date 
0 2016-12-01 
1 2016-11-01 
2 2014-05-03 
+0

Спасибо за ваш ответ. Я на самом деле просто решил это сам, преобразовывая столбец в строку, редактируя его, а затем преобразовывая его обратно в дату. Я буду принимать этот ответ, поскольку он также кажется нужным, не переходя от строки и обратно. Благодаря! –

Смежные вопросы