为了账号安全,请及时绑定邮箱和手机立即绑定

在python中重新采样时间戳序列

在python中重新采样时间戳序列

饮歌长啸 2021-09-23 09:43:28
我有一个像这样的时间戳序列:from datetime import datetimedts = [datetime(2018, 12, 21, 10), datetime(2018, 12, 21, 11), datetime(2018, 12, 21, 12)]它们可能有也可能没有间隙,但每个时间戳代表 1 小时的时间段。我想重新取样这代表30个细微时间戳序列30个分钟的周期,像这样: [datetime(2018, 12, 21, 10, 0), datetime(2018, 12, 21, 10, 30), datetime(2018, 12, 21, 11, 0), datetime(2018, 12, 21, 11, 30), datetime(2018, 12, 21, 12, 0), datetime(2018, 12, 21, 12, 30)]。我能得到的最接近的是(ab)使用熊猫:import pandas as pds = pd.Series(dts, index=pd.DatetimeIndex(dts))s.asfreq('30T').index这让我得到以下DatetimeIndex(['2018-12-21 10:00:00', '2018-12-21 10:30:00',               '2018-12-21 11:00:00', '2018-12-21 11:30:00',               '2018-12-21 12:00:00'],              dtype='datetime64[ns]', freq='30T')请注意,它没有“2018-12-21 12:30:00”。
查看完整描述

2 回答

?
森林海

TA贡献2011条经验 获得超2个赞

你不需要pandas. 您可以使用timedelta向datetime对象添加时间间隔。


您可以使用map该区间适用于每个元素dts,然后zip并list创建一个新的interleavened列表。


from datetime import datetime

from datetime import timedelta


dts = [datetime(2018, 12, 21, 10), datetime(2018, 12, 21, 11), datetime(2018, 12, 21, 12)]


new_dts = list(zip(dts, map(lambda x: x + timedelta(minutes=30), dts)))


查看完整回答
反对 回复 2021-09-23
  • 2 回答
  • 0 关注
  • 336 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号