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

如何不使用聚合函数执行Pivot,将value列转成Timestamp与Value列?

解决思路与实现代码

你的核心问题是缺少分组标识,导致Pivot时所有行被归为同一组,只能得到聚合后的单行结果。下面提供三种实用的解决方法,以Python Pandas为例:

方法一:添加分组序号后Pivot

通过给每一对(t, v)行添加唯一组ID,让Pivot能识别独立的时间-数值对,避免不必要的聚合:

import pandas as pd

# 假设你的原始数据已存入DataFrame df
df['group_id'] = (df['key'] == 't').cumsum()  # 每遇到't'就生成新组号

# 执行Pivot并整理结果
result = df.pivot(
    index=['Area', 'Sensor', 'Type', 'group_id'],
    columns='key',
    values='value'
).reset_index()

# 重命名列并清理临时列
result = result.rename(columns={'t': 'Timestamp', 'v': 'Value'}).drop(columns='group_id')

# 转换数据类型(可选,根据需求调整)
result['Timestamp'] = pd.to_datetime(result['Timestamp'])
result['Value'] = pd.to_numeric(result['Value'])

方法二:利用行顺序直接拼接

观察到t(时间)和v(数值)是交替出现的,直接筛选两类行后拼接:

# 分离时间行和数值行
time_rows = df[df['key'] == 't'].reset_index(drop=True)
value_rows = df[df['key'] == 'v']['value'].reset_index(drop=True)

# 合并数据并整理列
result = time_rows.drop(columns=['key', 'value']).assign(
    Timestamp=time_rows['value'],
    Value=value_rows
)

# 转换数据类型
result['Timestamp'] = pd.to_datetime(result['Timestamp'])
result['Value'] = pd.to_numeric(result['Value'])

方法三:分组后批量整理

如果数据存在多组Area/Sensor/Type,按分组批量提取时间和数值列表后重组:

def reshape_single_group(group):
    timestamps = group[group['key'] == 't']['value'].tolist()
    values = group[group['key'] == 'v']['value'].tolist()
    return pd.DataFrame({
        'Area': [group['Area'].iloc[0]] * len(timestamps),
        'Sensor': [group['Sensor'].iloc[0]] * len(timestamps),
        'Type': [group['Type'].iloc[0]] * len(timestamps),
        'Timestamp': timestamps,
        'Value': values
    })

# 按分组处理并合并结果
result = df.groupby(['Area', 'Sensor', 'Type']).apply(reshape_single_group).reset_index(drop=True)

# 转换数据类型
result['Timestamp'] = pd.to_datetime(result['Timestamp'])
result['Value'] = pd.to_numeric(result['Value'])

最终效果

处理后的结果会将每一对时间和数值合并为一行,保留Area、Sensor、Type列,生成Timestamp和Value列,示例结果如下:

AreaSensorTypeTimestampValue
1termometerTemperature2022-01-01 00:00:01.00300024
1termometerTemperature2022-01-01 00:00:02.87600025
...............

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:35:22