嗨,我有以下数据框:
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
时间间隔等于从00:00:00-00:00:02到00:58:00-00:00:00的2分钟
我是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]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句