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

我有一个像这样的时间戳序列:


from datetime import datetime

dts = [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 pd

s = 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”。


饮歌长啸
浏览 337回答 2
2回答

森林海

你不需要pandas. 您可以使用timedelta向datetime对象添加时间间隔。您可以使用map该区间适用于每个元素dts,然后zip并list创建一个新的interleavened列表。from datetime import datetimefrom datetime import timedeltadts = [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)))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python