2016-12-14 56 views
0

我有一個數據框有一個名爲'fecha_dato'的列。它存儲「2016-05-28」這樣的日期。我想從fecha_dato中提取2016,05和28作爲int,作爲名爲year,month和day的新列。我使用迭代器的方式,但它太慢了。 有沒有任何有效的方法來做到這一點?如何在Pandas中提取年,月和日?

回答

8

你需要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 
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

+1

但後來投給int – jezrael

+0

@jezrael是的,謝謝 – piRSquared

相關問題