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

将以Timestamp为索引的DataFrames转换为三元组存储格式

解决方法:用Pandas将多宽表转为统一长格式

这需求用Pandas的melt函数就能完美搞定,它专门用来把宽格式的DataFrame转成你要的长格式,再配合concat合并多个处理后的表就行,具体步骤如下:

1. 先准备示例数据(模拟你的场景)

首先我们复现你给出的两个DataFrame,注意把timestamp转成datetime类型方便后续排序:

import pandas as pd

# 第一个DataFrame(含tag、celc列)
df1 = pd.DataFrame({
    'timestamp': ['2018-03-15 20:05:01.080', '2018-03-15 20:05:23.630', '2018-03-15 20:12:16.990'],
    'tag': [1, 1, 1],
    'celc': [52, 52, 53]
})
df1['timestamp'] = pd.to_datetime(df1['timestamp'])

# 第二个DataFrame(含bpm列)
df2 = pd.DataFrame({
    'timestamp': ['2018-03-15 20:05:01', '2018-03-15 20:21:41', '2018-03-15 20:38:21'],
    'bpm': [50.00, 74.00, 65.33]
})
df2['timestamp'] = pd.to_datetime(df2['timestamp'])

2. 单个DataFrame转长格式

用melt函数把每个宽表转成timestamp+label+value的结构:

  • id_vars='timestamp':指定保留timestamp作为标识列
  • var_name='label':把原来的列名(比如tag、celc、bpm)转成label列的值
  • value_name='value':把原来列对应的值转成value列的值
# 处理第一个DataFrame
melted_df1 = df1.melt(id_vars='timestamp', var_name='label', value_name='value')

# 处理第二个DataFrame
melted_df2 = df2.melt(id_vars='timestamp', var_name='label', value_name='value')

3. 合并并排序所有结果

把处理后的多个长表合并,再按timestamp排序,就得到你要的最终格式了:

# 合并所有处理后的表
final_df = pd.concat([melted_df1, melted_df2])

# 按timestamp排序,重置索引
final_df = final_df.sort_values('timestamp').reset_index(drop=True)

最终输出结果

运行后final_df的内容就是:

timestamp label  value
0 2018-03-15 20:05:01.000   bpm   50.00
1 2018-03-15 20:05:01.080   tag    1.00
2 2018-03-15 20:05:01.080  celc   52.00
3 2018-03-15 20:05:23.630   tag    1.00
4 2018-03-15 20:05:23.630  celc   52.00
5 2018-03-15 20:12:16.990   tag    1.00
6 2018-03-15 20:12:16.990  celc   53.00
7 2018-03-15 20:21:41.000   bpm   74.00
8 2018-03-15 20:38:21.000   bpm   65.33

补充:如果你的DataFrame是以Timestamp为索引

如果你的原始DataFrame是把timestamp设为索引(而不是列),那只需要先把索引转成列再执行上面的步骤:

# 假设df1的索引是timestamp,先转成列
df1 = df1.reset_index(names='timestamp')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:33:50