python - 使用python从日期时间列添加时间间隔列
问题描述
嗨,我有以下数据框:
assetReference lastPositionUpdate
TAG20 2020-07-05 00:01:06
TAG20 2020-07-05 00:03:07
TAG20 2020-07-05 00:05:14
TAG20 2020-07-05 00:07:15
TAG20 2020-07-05 00:09:22
TAG20 2020-07-05 00:11:30
TAG20 2020-07-05 00:13:31
TAG20 2020-07-05 00:15:39
TAG20 2020-07-05 00:17:47
TAG20 2020-07-05 00:19:54
TAG20 2020-07-05 00:21:55
TAG20 2020-07-05 00:24:03
TAG20 2020-07-05 00:26:11
TAG20 2020-07-05 00:28:18
TAG20 2020-07-05 00:30:27
TAG20 2020-07-05 00:32:34
TAG20 2020-07-05 00:34:43
TAG20 2020-07-05 00:36:50
TAG20 2020-07-05 00:38:58
我想添加与每一行相关联的相应时间间隔的列,如下所示:
lastPositionUpdate => Time interval
05/07/2020 00:01:06 => 00:00:00-00:02:00
05/07/2020 00:03:07 => 00:02:00-00:04:00
05/07/2020 00:05:14 => 00:04:00-00:06:00
时间间隔等于 2 分钟,从 00:00:00-00:00:02 到 00:58:00-00:00:00
我是 python 新手。你能帮我吗
解决方案
使用与您的数据相似的数据构造一个 DataFrame:
import pandas as pd
df = pd.DataFrame([
['TAG20', '2020-07-05 00:01:06'],
['TAG20', '2020-07-05 00:03:07'],
['TAG20', '2020-07-05 00:05:14'],
['TAG20', '2020-07-05 00:07:15'],
['TAG20', '2020-07-05 00:09:22'],
['TAG20', '2020-07-05 00:11:30'],
],
columns=['_source.tag.assetReference', '_source.tag.location.lastPositionUpdate']
)
df.loc[:, '_source.tag.location.lastPositionUpdate'] = pd.to_datetime(df['_source.tag.location.lastPositionUpdate'])
我们可以像这样添加一个具有间隔的列:
temp = df.assign(
low=df['_source.tag.location.lastPositionUpdate'].dt.floor('2min'),
high=df['_source.tag.location.lastPositionUpdate'].dt.ceil('2min')
)
df.loc[:, 'interval'] = temp.apply(lambda row: pd.Interval(row['low'], row['high']), axis=1)
这可能不是最快的方法,但它确实有效:
_source.tag.assetReference _source.tag.location.lastPositionUpdate interval
0 TAG20 2020-07-05 00:01:06 (2020-07-05, 2020-07-05 00:02:00]
1 TAG20 2020-07-05 00:03:07 (2020-07-05 00:02:00, 2020-07-05 00:04:00]
2 TAG20 2020-07-05 00:05:14 (2020-07-05 00:04:00, 2020-07-05 00:06:00]
3 TAG20 2020-07-05 00:07:15 (2020-07-05 00:06:00, 2020-07-05 00:08:00]
4 TAG20 2020-07-05 00:09:22 (2020-07-05 00:08:00, 2020-07-05 00:10:00]
5 TAG20 2020-07-05 00:11:30 (2020-07-05 00:10:00, 2020-07-05 00:12:00]
推荐阅读
- php - PHP Table - 如何在从数据库中提取的每一行表上添加不同的超链接
- c# - 事件重入问题。同一事件同时运行
- python - 将编辑线连接到标签并获取标签的值并在单击按钮时打印它
- c# - 报告在 Visual Studio 2017 中不起作用
- java - 如何将我的输入保存到电子表格?
- reactjs - 如果来自服务器的响应返回空,则显示区域
- javascript - 自定义闭包函数未定义 JS 浏览器
- python - 失败后Odoo删除工作?
- bash - 在许多文件中切割列 - Bash - 如何将结果保存在不同的文件中?
- swift - 使用 NSFetchResultsController 时 TableView 不显示任何内容