熊猫从datetime.time转换为整数时间戳

时间:2020-04-25 13:16:21

标签: python pandas dataframe apply

遗憾的是,this questiondatetime.date的回答不适用于datetime.time

所以我实现了一个df.apply()函数,该函数可以完成我期望的操作:

def get_ts_timeonly_float(timeonly):
    if isinstance(timeonly, datetime.time):
        return timeonly.hour * 3600 + timeonly.minute * 60 + timeonly.second
    elif isinstance(timeonly, pd.Timedelta):
        return timeonly.seconds

fn_get_ts_timeonly_pd_timestamp = lambda row: get_ts_timeonly_float(row.ts_timeonly)
col = df.apply(fn_get_ts_timeonly_pd_timestamp, axis=1)
df = df.assign(ts_timeonly_as_ts=col.values)

问题:

但是,这还不是“非常快”。原因之一是.apply() 将在内部尝试循环Cython迭代器。但是在这种情况下 您传递的lambda不是可以处理的 Cython,因此在Python中称为“ Cython”,因此,这还不是全部 快。

This is a great blog post

因此,有没有更快的方法可以将datetime.time转换为某些int表示形式(例如total_seconds直到一天开始)?谢谢!

0 个答案:

没有答案