从datetime类型的一个数据框列创建年,月,日

smi*_*hra 3 dataframe python-3.x pandas

我有一个pandas数据帧数据,其列MFR_DATE类型为datetime.我想创建其他列,MFR_YEAR,MFR_MONTH,MFR_DAY,我使用以下3个语句来执行此操作.我想知道是否有更好的方法吗?

data['MFR_YEAR'] = data.MFR_DATE.apply(lambda t: t.year)
data['MFR_MONTH'] = data.MFR_DATE.apply(lambda t: t.month)
data['MFR_DAY'] = data.MFR_DATE.apply(lambda t: t.day)
Run Code Online (Sandbox Code Playgroud)

Max*_*axU 5

使用矢量化Series.dt.访问器:

data['MFR_YEAR'] = data['MFR_DATE'].dt.year
data['MFR_MONTH'] = data['MFR_DATE'].dt.month
data['MFR_DAY'] = data['MFR_DATE'].dt.day
Run Code Online (Sandbox Code Playgroud)

可用方法和属性列表:

In [21]: df.MFR_DATE.dt.
       df.MFR_DATE.dt.ceil           df.MFR_DATE.dt.dayofweek      df.MFR_DATE.dt.floor          df.MFR_DATE.dt.is_month_end   df.MFR_DATE.dt.is_year_end
       df.MFR_DATE.dt.date           df.MFR_DATE.dt.dayofyear      df.MFR_DATE.dt.freq           df.MFR_DATE.dt.is_month_start df.MFR_DATE.dt.is_year_start
       df.MFR_DATE.dt.day            df.MFR_DATE.dt.days_in_month  df.MFR_DATE.dt.hour           df.MFR_DATE.dt.is_quarter_end df.MFR_DATE.dt.microsecond
       df.MFR_DATE.dt.day_name       df.MFR_DATE.dt.daysinmonth    df.MFR_DATE.dt.is_leap_year   df.M…t.is_quarter_start       df.MFR_DATE.dt.minute
Run Code Online (Sandbox Code Playgroud)