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

Python实现:判断HDF表中传感器数据所属的案例类别

匹配传感器数据到对应案例类别解决方案

核心逻辑

要判断传感器数据所属的案例类别,关键是先为每个案例的analog和temperature指标设定合理的范围阈值(比如基于常量值的浮动比例或固定偏差),再逐一检查传感器每行数据是否落在某个案例的指标范围内,匹配成功则标记对应的case编号。

基于Python Pandas的实现(含示例验证)

假设我们用Pandas处理HDF表,以下是针对你提供的示例数据的具体步骤:

1. 加载并预处理案例表

首先加载案例数据,并为每个案例计算指标范围(这里以±8%的analog浮动和±2的温度固定偏差为例,你可以根据实际业务场景调整阈值):

import pandas as pd

# 加载案例HDF表(替换为你的实际HDF读取代码,比如pd.read_hdf())
case_df = pd.DataFrame(
    [[1500, 22, 0], [1100, 40, 1], [2400, 19, 2]],
    columns=['analog', 'temperature', 'case']
)

# 计算每个案例的指标范围
case_df['analog_low'] = case_df['analog'] * 0.92
case_df['analog_high'] = case_df['analog'] * 1.08
case_df['temp_low'] = case_df['temperature'] - 2
case_df['temp_high'] = case_df['temperature'] + 2

2. 加载传感器数据并匹配案例

接下来加载传感器数据,通过向量化操作高效匹配对应案例:

# 加载传感器HDF表(同样替换为实际读取代码)
sensor_df = pd.DataFrame(
    [[1420, 20], [1000, 39], [2300, 29]],
    columns=['analog', 'temperature']
)

# 批量匹配每个传感器行对应的案例
matched_cases = []
for _, row in sensor_df.iterrows():
    # 筛选出当前行落在范围内的案例
    valid_cases = case_df[
        (case_df['analog_low'] <= row['analog']) &
        (row['analog'] <= case_df['analog_high']) &
        (case_df['temp_low'] <= row['temperature']) &
        (row['temperature'] <= case_df['temp_high'])
    ]
    # 取第一个匹配的case编号(若有多个匹配需额外处理逻辑)
    matched_cases.append(valid_cases['case'].iloc[0] if not valid_cases.empty else None)

sensor_df['case'] = matched_cases

示例结果验证

对于传感器第一行数据(1420, 20):

  • 案例0的analog范围是1500*0.92=1380到1500*1.08=1620,1420落在区间内;
  • 温度范围是22-2=20到22+2=24,20刚好符合要求;
  • 因此该行匹配到case=0。

批量优化建议(针对300行案例)

如果你的案例表有300行,上述循环已经足够高效,若要进一步优化可以用广播机制减少循环,但对于300行的规模,循环的性能差异可以忽略。如果存在多个案例匹配同一传感器行的情况,你需要额外添加逻辑(比如优先匹配范围最接近的案例)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:05:38