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

如何用Python从时间序列数据生成符合要求的二维数组?

问题描述

我有一个含4列的大型时间序列数据集:Time A B C。希望从中生成一个新的二维数组,要求如下:

  • 行数由A的唯一值数量(x轴)决定,列数由B的唯一值数量(y轴)决定
  • 行列值按升序排列,单元格填充对应的C值(z轴)
  • 无对应值时填充None,存在多个对应值时填充平均值

背景说明:想用这些数据通过Plotly绘制等高线图,需尽量减少该类图表固有的插值操作,None值将显示为空白。同时需要为A(x轴)和B(y轴)定义对应的二维数组,想知道是否有Python函数可轻松实现此需求,无需手动指定唯一值数量。

解决方案(已验证可行)

最终使用pandas的pivot_table函数,通过aggfunc参数设置重复值的处理方式,代码如下:

import pandas as pd
import numpy as np
import plotly.graph_objects as go

pivot_table = pd.pivot_table(df, values='C', index='B', columns='A', aggfunc=np.mean)

z_values = pivot_table.values
x_values = pivot_table.columns.values
y_values = pivot_table.index.values

self.fig.add_trace(go.Contour(x=x_values, y=y_values, z=z_values, connectgaps=False))

说明:

  • pd.pivot_table会自动按A、B的唯一值升序排列生成二维表,缺失值默认填充NaN(Plotly会将其识别为空白,和需求的None效果一致)
  • aggfunc=np.mean实现了多值取平均的要求
  • 直接从透视表中提取columns、index和values即可得到Plotly等高线图所需的x、y、z数组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 21:22:37