我在数据框中有一个整数列("ADMIT_YEAR"
)。该列中的典型元素如下:200110
,其中2001
=年,10
=月。我需要将此列转换为键入datetime。
我使用下面的笨重方法成功地做到了这一点。有人可以提供一种更有效的方式来编写这段代码吗?
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 :(得分:4)
直接将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