python - 从日期时间中减去分钟 - python
问题描述
我有一个由两列组成的数据框:
- _time - 数据类型:datatime64
- 经过 - dtype:对象
查看数据框:
vehicles_stats[['_time','elapsed']].head()
输出:
_time elapsed
0 2020-10-28 21:06:39.797000+01:00 26
1 2020-10-28 16:12:38.357000+01:00 16
2 2020-10-28 19:16:38.737000+01:00 11
3 2020-10-29 11:58:43.122000+01:00 16
4 2020-10-28 20:38:39.294000+01:00 16
如何更改“经过”列的类型以使其代表分钟?然后,我需要从每条记录的 _time 值中减去这些分钟。
任何建议表示赞赏
解决方案
使用to_datetime
withto_timedelta
和减去 by Series.sub
:
df['new'] = pd.to_datetime(df['_time']).sub(pd.to_timedelta(df['elapsed'], unit='min'))
print (df)
_time elapsed new
0 2020-10-28 21:06:39.797000+01:00 26 2020-10-28 19:40:39.797
1 2020-10-28 16:12:38.357000+01:00 16 2020-10-28 14:56:38.357
2 2020-10-28 19:16:38.737000+01:00 11 2020-10-28 18:05:38.737
3 2020-10-29 11:58:43.122000+01:00 16 2020-10-29 10:42:43.122
4 2020-10-28 20:38:39.294000+01:00 16 2020-10-28 19:22:39.294
如果需要将列从分钟转换为 timedeltas:
df['elapsed'] = pd.to_timedelta(df['elapsed'], unit='min')
df['new'] = pd.to_datetime(df['_time']).sub(df['elapsed'])
print (df)
_time elapsed new
0 2020-10-28 21:06:39.797000+01:00 0 days 00:26:00 2020-10-28 19:40:39.797
1 2020-10-28 16:12:38.357000+01:00 0 days 00:16:00 2020-10-28 14:56:38.357
2 2020-10-28 19:16:38.737000+01:00 0 days 00:11:00 2020-10-28 18:05:38.737
3 2020-10-29 11:58:43.122000+01:00 0 days 00:16:00 2020-10-29 10:42:43.122
4 2020-10-28 20:38:39.294000+01:00 0 days 00:16:00 2020-10-28 19:22:39.294
推荐阅读
- linux - 特使部署:运行特使运行部署命令的问题
- python - GraphicsView 场景 postEvent focusProxy 不会将事件从事件过滤器传递到 QWebEngineView Widget
- ios - CoreData + CloudKit 但不共享
- ruby-on-rails - 活跃的管理员偏执狂宝石不能与友好的 id 宝石一起使用?
- git - 如何同步 git master、origin/master 和上游 master
- clips - CLIPS:如何打印特殊字符和字母,如“ñ”?
- .net - 如何删除 Web API 方法的 Jwt 令牌身份验证
- c++ - C++双向链表按字母顺序和值添加节点
- types - 如何理解 agda 中的数据与记录功能?
- javascript - 如何仅在桌面上加载 Shopify 部分元素?