将多维气候 numpy 数组转换为 Pandas 数据框

Convert multidimensional climate numpy array to Pandas dataframe

我想将多维气候数据转换为 pandas 数据框。我的 numpy 数组的形状是 temperature.shape -> (365,100,200) -> ["time", "longitude", "latitude"]。然后我想在我的 pandas 数据框中包含以下列:columns=["time", "lon", "lat", "temp"]
我试过这段代码: df = pd.DataFrame(temperature, columns=['time', 'lat', 'lon', 'temp'])
我收到此错误: ValueError:必须传递二维输入
我该如何解决?我在建议的主题中找不到任何提示。谢谢

Pandas 需要一个二维数组,其中的列和行对应于最终数据框。

您似乎正试图解开 365*100*200=7,300,000 条单独记录中的 (365,100,200) 数组。如果您在每次访问中都有每个独立数量的值,则可以通过展平数组来完成此操作。 例如,解开一个 (3,4,5) 形状的 3D 数组,其 X、Y 和 Z 维度由 lists/arrays x_indexy_indexz_index 给出,而不是时间、经度、纬度和 M 替换温度:

import numpy as np
import pandas as pd

nx = 3
ny = 4
nz = 5

M = np.ndarray((nx,ny,nz))
for i in range(nx):
    for j in range(ny):
        for k in range(nz):
            M[i,j,k] = (i+j)*k
            
# constructed nx by ny by nz matrix from function f(x,y,z) = (x+y)*z
            
x_index = list(range(nx))
y_index = list(range(ny))
z_index = list(range(nz))

# Get arrays/list giving the values of x/y/z

X, Y, Z = np.meshgrid(x_index,y_index,z_index)

# Make (3,4,5) arrays of each independent variable

pd.DataFrame({"M=(X+Y)*Z":M.flatten(), "X":X.flatten(), "Y":Y.flatten(), "Z":Z.flatten()})

# Flatten the data and independent variables to make 3*4*5=60 individual records