如何在python中将整数类型的列转换为日期时间类型?

Jam*_*ves 4 python datetime pandas

"ADMIT_YEAR"在数据框中有一列 ( ) 整数。该列中的典型元素如下所示:200110,其中2001= 年和10= 月。我需要将此列转换为日期时间类型。

我使用下面笨拙的方法成功地做到了这一点。有人可以提供一种更有效的方式来编写这段代码吗?

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")
Run Code Online (Sandbox Code Playgroud)

注意:我相信这里没有回答这个问题因为我的日期不是整数天。

Mar*_*ers 6

只是采用pd.to_datetime直接(字符串转换)列,无需使用字符串的切片的位置:

Freshman['ADMIT_DATE'] = pd.to_datetime(Freshman['ADMIT_DATE'].astype(str), format='%Y%m')
Run Code Online (Sandbox Code Playgroud)

数字之间不需要有分隔符:

>>> 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
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

5226 次

最近记录:

9 年,6 月 前