如何获取从包含数据变量的多维熊猫数据框创建的数据集的形状?
我将csv文件导入到pandas数据框中,设置一个多索引并将其转换为数据集。我可以从索引(而不是数据变量)转换的尺寸(运行和位置)中获取形状。我打算将其用作keras模型的张量输入,因此需要指定形状。我将数据集想象成一个立方体,其中“ loc”和参数(P1-P3)形成xy平面,“ run”是z轴(平面堆栈)。实际上,我将不知道这些数据中将有多少个运行,位置或参数。
run,loc,P1,P2,P3
R1,“(0,0)”,1,2,3
R1,“(0,1)”,4,5,6
R1,“(1,0)”,7,8,9
R1,“(1,1)”,10,11,12
R2,“(0,0)”,100,200,300
R2,“(0,1)”,400,500,600
R2,“(1,0)”,700,800,900
R2,“(1,1)”,1000,1100,1200
csvfile = "my_file.csv"
df = pd.read_csv(csvfile)
df.set_index(['run', 'loc'], inplace=True)
print('========== df ==========')
print(df)
# Convert to dataset
ds = df.to_xarray()
print('========== ds ==========')
print(ds)
print('========== ds shape ==========')
print(tuple(ds.dims[d] for d in ['run', 'loc']))
对于ds形状(底部),我得到(2,4),但我想要(2,4,3)
# Output ========== df ========== P1 P2 P3 run loc R1 (0,0) 1 2 3 (0,1) 4 5 6 (1,0) 7 8 9 (1,1) 10 11 12 R2 (0,0) 100 200 300 (0,1) 400 500 600 (1,0) 700 800 900 (1,1) 1000 1100 1200 ========== ds ========== Dimensions: (loc: 4, run: 2) Coordinates: * run (run) object 'R1' 'R2' * loc (loc) object '(0,0)' '(0,1)' '(1,0)' '(1,1)' Data variables: P1 (run, loc) int64 1 4 7 10 100 400 700 1000 P2 (run, loc) int64 2 5 8 11 200 500 800 1100 P3 (run, loc) int64 3 6 9 12 300 600 900 1200 ========== ds shape ========== (2, 4)