繁体   English   中英

Python Dataframe 将日期时间解析为年、月、日、时、分、秒的列

[英]Python Dataframe parse datetime into columns for year, month, day, hour, minute, second

我在 dataframe 中有一个日期时间列 ['time_in']。 下面的 2 个代码有效,但为了效率或简洁,是否有更紧凑或预先存在的 function 来分解为年、月、日、小时、分钟、秒的列(或者更好的是,这些组件的任何子集)?

df['year']=df.time_in.dt.year.astype('Int64')
df['month']=df.time_in.dt.month.astype('Int64')
df['day']=df.time_in.dt.day.astype('Int64')
df['hour']=df.time_in.dt.hour.astype('Int64')
df['minute']=df.time_in.dt.minute.astype('Int64')
df['second']=df.time_in.dt.second.astype('Int64')

或这个

df['dt_string']=df.time_in.astype(str)
dfx=df.dt_string.str.split(expand=True)
dfdate=pd.DataFrame(columns=['year','month','day'])
dftime=pd.DataFrame(columns=['hour','minute','second'])
dfdate[['year','month','day']]=dfx[0].str.split('-',expand=True).astype('int64')
dftime[['hour','minute','second']]=dfx[1].str.split(':',expand=True).astype(float).astype('int64')
df=pd.concat([df,pd.concat([dfdate,dftime], axis=1)], axis=1)
attr = ['year','month','day','hour','minute','second']
for a in attr:
    df[a]=getattr(df.time_in.dt,a)

在 90k 行上进行 500 次迭代 = 每次迭代平均 073 秒比上述 v1 快 30% (单独调用)

或以功能形式

def dt_split(df,col,times=['year','month','day','hour','minute','second']):
    for ttt in times:
        df[ttt]=getattr(df[col].dt,ttt)
    return df

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM