有没有一种方法可以从时间序列数据填充2d数组- Python

tkclm6bt  于 2023-06-28  发布在  Python
关注(0)|答案(1)|浏览(106)

抱歉,在移动的上的格式不好。
我有一个大型的时间序列数据集,有4列。
Time A B C
我想从这个数据填充一个新的2D数组,其中;
行数由A(x轴)的唯一值的数量给出。
列数由B(y轴)的唯一值的数量给出。
假设列和行值按升序排列,每个“单元格”中的值应该是C(z轴)的相应值。
如果不存在对应的值,则“单元格”应为None
如果存在多个相应值,则单元格应包含平均值。
对于上下文,我想使用此数据使用Plotly绘制等高线图,但需要最大限度地减少这些图表类型固有的插值量,None valuea将显示空白。我知道我还需要为A(x轴)和C(y轴)定义一个相应的2d数组。
有没有一个python函数可以轻松地做到这一点,而无需手动声明唯一值的数量?

更新-已解决

最后我使用pivot_table和aggfunc来设置重复项的处理方式,如下所示:

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))
4c8rllxm

4c8rllxm1#

事实上,我认为循环通过 Dataframe 将是最简单的。Pivot无法处理重复项...
类似这样的东西(我没有测试确切的语法):

new_df = pd.DataFrame(index=df.A.unique())
for r in df.A.unique():
    for c in df.B.unique():
        result_c = df[df.A==r & df.B==c]['C'].mean()
        new_df.at[r,c] = result_c

相关问题