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

基于公共属性将多组信号数据列表转换为DataTable(C#)

合并多组带时间戳的信号数据为结构化DataTable

需求说明

我有多组带时间戳的信号数据列表,例如SignalA、SignalB、SignalC,每组都是包含{time, value}对象的列表,列表数量不固定(可为2、3、4组等)。

示例输入

SignalA = [{time="10:00", value=1},{time="11:00", value=2}, {time="12:00", value=3}]
SignalB = [{time="10:00", value=2},{time="11:00", value=3}, {time="12:00", value=1}]
SignalC = [{time="10:00", value=3},{time="11:00", value=1}, {time="12:00", value=2}]

目标输出

需要生成包含time、SignalA、SignalB等列的DataTable,每一行对应一个时间点,各信号列填充对应时间的value值:

Datatable = [{time="10:00", SignalA=1, SignalB=2, SignalC=3}, {time="11:00", SignalA=2, SignalB=3, SignalC=1}, {time="12:00", SignalA=3, SignalB=1, SignalC=2}]

解决方案(Python实现)

核心思路是以时间戳为核心键,逐步整合各信号的对应值,代码支持任意数量的信号输入:

# 示例输入数据
SignalA = [{"time": "10:00", "value": 1}, {"time": "11:00", "value": 2}, {"time": "12:00", "value": 3}]
SignalB = [{"time": "10:00", "value": 2}, {"time": "11:00", "value": 3}, {"time": "12:00", "value": 1}]
SignalC = [{"time": "10:00", "value": 3}, {"time": "11:00", "value": 1}, {"time": "12:00", "value": 2}]

def merge_signals(*signals, signal_names):
    # 用字典存储每个时间点的完整数据
    time_based_data = {}
    
    for sig_name, signal in zip(signal_names, signals):
        for entry in signal:
            current_time = entry["time"]
            # 初始化该时间点的基础结构
            if current_time not in time_based_data:
                time_based_data[current_time] = {"time": current_time}
            # 填充当前信号的数值
            time_based_data[current_time][sig_name] = entry["value"]
    
    # 转换为列表格式返回,如需按时间排序可添加sorted
    return list(time_based_data.values())

# 调用函数生成DataTable
DataTable = merge_signals(SignalA, SignalB, SignalC, signal_names=["SignalA", "SignalB", "SignalC"])
print(DataTable)

扩展处理

  • 时间戳未对齐场景:如果部分信号缺少某个时间点的数据,可以在填充时设置默认值(如None),修改代码中赋值部分:
    time_based_data[current_time][sig_name] = entry.get("value", None)
    
  • 按时间排序:如果需要输出的DataTable按时间顺序排列,修改返回语句:
    return sorted(time_based_data.values(), key=lambda x: x["time"])
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:45:23