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

Python中使用pandas实现DataFrame传感器列转行的便捷方法咨询

pandas宽表转长表解决方案

你可以直接用pandas内置的melt函数实现转换,这个方案天然支持传感器数量可变的场景,新增传感器列不需要修改代码逻辑:

完整可运行代码

import pandas as pd
# 生成测试用df1
dictionary = {'time': ['2019-08-01', '2019-08-02', '2019-08-03'],
              'asset_id': ['120', '125', '120'],
              'sensor_01': [23, 45, 25],
              'sensor_02': [54, 38, 49]
}
df1 = pd.DataFrame(dictionary)

# 核心转换代码
df2 = df1.melt(
    id_vars=['time', 'asset_id'],  # 指定不需要展开的主键列
    var_name='sensor_ID',          # 原传感器列名存储到该列
    value_name='sensor_value'      # 原传感器数值存储到该列
)

鲁棒性优化写法

如果表中存在其他非主键、非传感器的字段,可自动识别所有sensor_开头的列做转换:

# 自动匹配所有传感器列,新增sensor_xx列无需修改代码
sensor_cols = [col for col in df1.columns if col.startswith('sensor_')]
df2 = df1.melt(
    id_vars=['time', 'asset_id'],
    value_vars=sensor_cols,
    var_name='sensor_ID',
    value_name='sensor_value'
)

转换得到的df2和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:39:04