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

按Ayx标识过滤Signal值并存储为矩阵的技术问询

解决方案:按机器编号与时间戳提取Signal值并构建矩阵

没问题,这完全可以实现!我会基于Python的pandas库(处理表格数据的首选工具)给你一步步拆解实现思路和代码:


1. 先理清数据结构对应关系

从你给出的数据示例来看,表头里的NameX(Ayx)(比如Name1(A01))应该是对应后续SignalX列的机器归属——比如Name1(A01)对应Signal1,Name2(A02)对应Signal2,以此类推。我们需要先把机器编号(Ayx)和对应的Signal列关联起来。

2. 具体实现步骤

步骤1:读取并预处理数据

假设你的数据是CSV格式(如果是其他格式,只需调整读取方式),先加载数据并处理表头:

import pandas as pd
import re

# 读取数据,header=0表示第一行是表头
df = pd.read_csv('your_dataset.csv', header=0)

# 提取表头中包含机器编号的列(比如Name1(A01))
machine_header_cols = [col for col in df.columns if '(A' in col]
# 从这些列名中提取机器编号(比如从(A01)中取出01)
machine_ids = [re.search(r'\(A(\d+)\)', col).group(1) for col in machine_header_cols]
# 匹配对应的Signal列(Name1对应Signal1,Name2对应Signal2...)
signal_cols = [f'Signal{idx+1}' for idx in range(len(machine_header_cols))]

步骤2:构建机器与Signal列的映射

把机器编号和对应的Signal列绑定,方便后续提取:

machine_signal_map = dict(zip(machine_ids, signal_cols))

步骤3:生成目标矩阵

以**时间戳(Timestamp)**为列、机器编号为行,提取对应Signal值构建矩阵:

# 将时间戳设为数据的索引,方便后续按时间取值
df = df.set_index('Timestamp')

# 初始化结果矩阵
result_matrix = pd.DataFrame()

# 遍历每个机器,提取对应Signal列的值加入矩阵
for machine_id, signal_col in machine_signal_map.items():
    result_matrix[machine_id] = df[signal_col]

# 转置矩阵,让行是机器编号,列是时间戳(符合你需求的Signal1[i,j],i=机器,j=时间)
result_matrix = result_matrix.T

3. 如何使用结果矩阵

现在result_matrix就是你需要的结构:

  • 行索引是机器编号(比如01对应A01)
  • 列索引是时间戳(比如2017-11-01 00:00)
  • 取值示例:result_matrix.loc['01', '2017-11-01 00:00'] 就是机器A01在该时间点的Signal1值,完美对应你要的Signal1[i,j]形式。

注意事项

  • 如果表头的NameX和SignalX不是严格一一对应(比如Name3对应Signal5),你需要手动调整signal_cols的生成逻辑,确保机器编号和正确的Signal列关联。
  • 如果数据中有缺失值,可以用df.fillna()方法填充,避免矩阵出现空值影响后续使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:28:44