You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas将两个秒级索引DataFrame插值到新时间基准并做二进制与操作?

解决方法:将DataFrame插值到新时间基准并执行二进制与操作

核心思路

利用pandas的reindex方法结合method='nearest'参数,直接将两个DataFrame对齐到新的时间基准,自动完成最近邻插值(完全适配二进制0/1数据,无需额外round()处理),之后即可直接执行二进制与操作。

完整代码实现

import pandas as pd
import numpy as np

# 生成示例数据
data1 = pd.DataFrame({'time': np.arange(2, 300, 0.2),
                      'data': np.random.randint(0, 2, len(np.arange(2, 300, 0.2)))
                      }).set_index('time')

data2 = pd.DataFrame({'time': np.arange(10, 260, 0.2),
                      'data': np.random.randint(0, 2, len(np.arange(10, 260, 0.2)))
                      }).set_index('time')

new_timebase = np.linspace(10, 250, 2400)

# 对两个DataFrame执行最近邻插值,对齐到新时间基准
data1_aligned = data1.reindex(new_timebase, method='nearest')
data2_aligned = data2.reindex(new_timebase, method='nearest')

# 执行二进制与操作
result = data1_aligned['data'] & data2_aligned['data']

# 查看结果(可选)
print(result.head())

关键细节说明

  • method='nearest':自动匹配原索引中距离新时间点最近的数值,对于二进制数据来说是最精准的插值方式,避免了线性插值带来的非整数结果。
  • 索引范围适配:你的new_timebase区间(10-250)完全落在两个原始DataFrame的索引范围内(data1:2-300,data2:10-260),因此无需额外处理缺失值。如果后续遇到新时间超出原索引范围的情况,可以添加fillna()参数补充默认值(比如fillna(0))。
  • 二进制与操作:对齐后的两个Series索引完全一致,直接用&即可逐元素执行二进制与运算,得到有意义的状态结果。

内容的提问来源于stack exchange,提问作者Max

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 18:31:01