2016-04-21 2 views
1

У меня есть столбец ("ADMIT_YEAR") целых чисел в dataframe. Типичный элемент в столбце выглядит так: 200110, где 2001 = год и 10 = месяц. Мне нужно преобразовать этот столбец для ввода даты и времени.Как преобразовать столбец типа integer для типа datetime в python?

Мне это удалось, используя неуклюжий метод ниже. Может ли кто-нибудь предложить более эффективный способ написания этого кода?

Freshman['ADMIT_YEAR'] = Freshman['ADMIT_TERM'].astype(str).str.slice(0,4) 
Freshman['ADMIT_MONTH'] = Freshman['ADMIT_TERM'].astype(str).str.slice(4,6) 
Freshman['ADMIT_DATE_str'] = Freshman['ADMIT_YEAR']+'/'+Freshman['ADMIT_MONTH'] 
Freshman['ADMIT_DATE'] = pd.to_datetime(Freshman['ADMIT_DATE_str'], format="%Y/%m") 

Примечание: Я считаю, что этот вопрос не ответил here, поскольку мои даты не являются целыми днями.

+0

Связанный, но не точный обман: http://stackoverflow.com/q/31973895/189134 – Andy

ответ

3

Просто нанесите pd.to_datetime непосредственно (преобразование строкового) столбец, не нужно использовать строку нарезку здесь:

Freshman['ADMIT_DATE'] = pd.to_datetime(Freshman['ADMIT_DATE'].astype(str), format='%Y%m') 

Там нет требования, чтобы был разделитель между цифрами:

>>> import pandas as pd 
>>> df = pd.DataFrame({'ADMIT_DATE': [200110, 201604]}) 
>>> df['ADMIT_DATE'] = pd.to_datetime(df['ADMIT_DATE'].astype(str), format='%Y%m') 
>>> df 
    ADMIT_DATE 
0 2001-10-01 
1 2016-04-01 
>>> df.dtypes 
ADMIT_DATE datetime64[ns] 
dtype: object 
Смежные вопросы