python - 熊猫从 datetime.time 转换为整数时间戳
问题描述
可悲的是,这个问题的答案datetime.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 中调用它,因此速度不是那么快。
那么有没有更快的方法来转换datetime.time
为某种int
表示形式(比如total_seconds
直到一天开始)?谢谢!
解决方案
推荐阅读
- node.js - 确保 /usr/local/bin 在我的 $PATH 中
- amazon-dynamodb - 如何使用 boto3 更新 dynamodb 中的密钥?
- c - 尝试使用 strtok 拆分字符串
- mysql - 选择/更新一个表中的记录,这些记录是从具有多个记录的另一个表列中选择的 LIKE 单词
- matplotlib - 设置不同长度标签时控制多个图形的饼图中心位置
- bootstrap-4 - Bootstrap 响应式内联按钮
- c++ - DAG 中 2 个节点之间的最短路径未加权
- php - PHP搜索功能,如何给每个结果一个HREF LINK
- embed - Svelte 组件可以嵌入到非 Svelte 应用程序中吗?
- c# - IBidiSpl 中的 BindDevice 函数问题