如何用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
相关产品推荐
相关产品推荐

