xarray数据集的形状

时间:2019-08-23 18:12:47

标签: python-xarray

如何获取从包含数据变量的多维熊猫数据框创建的数据集的形状?

我将csv文件导入到pandas数据框中,设置一个多索引并将其转换为数据集。我可以从索引(而不是数据变量)转换的尺寸(运行和位置)中获取形状。我打算将其用作keras模型的张量输入,因此需要指定形状。我将数据集想象成一个立方体,其中“ loc”和参数(P1-P3)形成xy平面,“ run”是z轴(平面堆栈)。实际上,我将不知道这些数据中将有多少个运行,位置或参数。

CSV文件为:

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) 

0 个答案:

没有答案