8

我有两个单独的时间序列pandas.dataframe,第一个 -series1条目较少,并且与第二个不同的开始数据时间 - series2

index1 = pd.date_range(start='2020-06-16 23:16:00', end='2020-06-16 23:40:30', freq='1T')
series1 = pd.Series(range(len(index1)), index=index1)
index2 = pd.date_range('2020-06-16 23:15:00', end='2020-06-16 23:50:30', freq='30S')
series2 = pd.Series(range(len(index2)), index=index2)

如何重新采样 series2 以匹配DatetimeIndexof series1

4

3 回答 3

8

使用reindex

series2.reindex(series1.index)

输出:

2020-06-16 23:16:00     2
2020-06-16 23:17:00     4
2020-06-16 23:18:00     6
2020-06-16 23:19:00     8
2020-06-16 23:20:00    10
2020-06-16 23:21:00    12
2020-06-16 23:22:00    14
2020-06-16 23:23:00    16
2020-06-16 23:24:00    18
2020-06-16 23:25:00    20
2020-06-16 23:26:00    22
2020-06-16 23:27:00    24
2020-06-16 23:28:00    26
2020-06-16 23:29:00    28
2020-06-16 23:30:00    30
2020-06-16 23:31:00    32
2020-06-16 23:32:00    34
2020-06-16 23:33:00    36
2020-06-16 23:34:00    38
2020-06-16 23:35:00    40
2020-06-16 23:36:00    42
2020-06-16 23:37:00    44
2020-06-16 23:38:00    46
2020-06-16 23:39:00    48
2020-06-16 23:40:00    50
Freq: T, dtype: int64
于 2020-08-12T14:55:58.367 回答
3

一个简单的重采样不会产生正在寻找的结果吗?

series2.resample('T').first()

如果您的目标是将重新采样的时间戳合并回第一个数据集,您可以按如下方式执行此操作:

dt_map = {}
for group_label, group_series in series2.resample('T'):
    dt_map.update({x:group_label for x in group_series.index})

# Overwrite the index
series2.index = series2.index.map(dt_map)

注意:如果要执行聚合函数,请坚持使用第一个选项。

于 2020-08-12T15:17:20.437 回答
2

IIUC,这就是你需要的:

series2[series2.index.isin(series1.index)]
于 2020-08-09T12:34:08.140 回答