2016-05-10 10 views
1

У меня есть dataframe со столбцом строк с указанием месяца и года (MM-YY), но мне нужно, чтобы это было как YYYY,MM,DD например 2015,10,01Преобразование строки в формат даты

for i in df['End Date (MM-YY)']: 
    print i 

    Mar-16 
    Nov-16 
    Jan-16 
    Jan-16 

    print type(i) 

    <type 'str'> 
    <type 'str'> 
    <type 'str'> 
    <type 'str'> 

ответ

1

Я думаю, что вы можете использовать to_datetime с параметром format :

df = pd.DataFrame({'End Date (MM-YY)': {0: 'Mar-16', 
             1: 'Nov-16', 
             2: 'Jan-16', 
             3: 'Jan-16'}}) 
print df 
    End Date (MM-YY) 
0   Mar-16 
1   Nov-16 
2   Jan-16 
3   Jan-16 

print pd.to_datetime(df['End Date (MM-YY)'], format='%b-%y') 
0 2016-03-01 
1 2016-11-01 
2 2016-01-01 
3 2016-01-01 
Name: End Date (MM-YY), dtype: datetime64[ns] 

df['date'] = pd.to_datetime(df['End Date (MM-YY)'], format='%b-%y') 

Если вам нужно преобразовать date столбец в последний день месяца, используйте MonthEnd:

df['date-end-month'] = df['date'] + pd.offsets.MonthEnd() 
print df 

    End Date (MM-YY)  date date-end-month 
0   Mar-16 2016-03-01  2016-03-31 
1   Nov-16 2016-11-01  2016-11-30 
2   Jan-16 2016-01-01  2016-01-31 
3   Jan-16 2016-01-01  2016-01-31 
+0

Что делать, если мне нужно получить то же самое с последними датами каждого месяца? –

0

Вы можете использовать функции Лямбда и Карта, ссылки на которые приведены здесь 1 и 2 в сочетании с to_datetime с форматом параметров.

Можете ли вы предоставить дополнительную информацию о данных, которые вы используете. Я могу уточнить свой ответ дальше на основе этой части информации. Благодаря!

0

Если вы пытаетесь делать то, что я думаю, что вы ...

Используйте метод datetime.datetime.strptime! Это замечательный способ указать формат, который вы ожидаете, даты, отображаемые в строке, и возвращает хорошее datetime obj для вас, чтобы вы делали то, что хотите.

Вы можете даже вернуть его обратно в форматированную строку с datetime.datetime.strftime!

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