如何在熊猫中提取年,月,日?

时间:2016-12-14 08:45:03

标签: pandas

我有一个数据框,其中有一个名为' fecha_dato'的列。它存储的日期类似于2016-05-28'。我想从fecha_dato中提取2016,05和28作为int作为名为年,月和日的新列。我使用迭代器方式,但它太慢了。 有没有有效的方法来做到这一点?

2 个答案:

答案 0 :(得分:10)

您需要dt.yeardt.monthdt.day

df['year'] = df.fecha_dato.dt.year
df['month'] = df.fecha_dato.dt.month
df['day'] = df.fecha_dato.dt.day

样品:

df = pd.DataFrame({'fecha_dato':['2016-05-28','2016-06-28','2016-07-28']})

#if dtype is not datetime, cast it
df.fecha_dato = pd.to_datetime(df.fecha_dato)

df['year'] = df.fecha_dato.dt.year
df['month'] = df.fecha_dato.dt.month
df['day'] = df.fecha_dato.dt.day
print (df)
  fecha_dato  year  month  day
0 2016-05-28  2016      5   28
1 2016-06-28  2016      6   28
2 2016-07-28  2016      7   28

答案 1 :(得分:2)

通过一步将字符串解析为所有三列的优雅方法

df = pd.DataFrame({'fecha_dato':['2016-05-28','2016-06-28','2016-07-28']})

regex = '(?P<Year>[^-]+)-(?P<Month>[^-]+)-(?P<Day>[^-]+)'
pd.concat([df, df.fecha_dato.str.extract(regex).astype(int)], axis=1)

enter image description here