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

Pandas:重新采样数据帧以匹配不同数据帧的 DatetimeIndex

Pandas:重新采样数据帧以匹配不同数据帧的 DatetimeIndex

HUH函数 2023-05-09 10:52:20
我有两个独立的时间序列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?
查看完整描述

3 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

使用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


查看完整回答
反对 回复 2023-05-09
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

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


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)

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


查看完整回答
反对 回复 2023-05-09
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

IIUC,这就是你需要的:

series2[series2.index.isin(series1.index)]


查看完整回答
反对 回复 2023-05-09
  • 3 回答
  • 0 关注
  • 95 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信