将日常Excel数据组织成xarray数据集

比方说,我想用xarray来处理一些日常天气数据,这些数据的组织方式与xarray文档中的这个例子类似:

但是,数据在多个Excel文件中提供给我,其中每个文件包含一天的数据 。 文件名包含date信息,文件看起来像这个玩具的例子里面:

XY Temp Prec 1 1 21 34 1 2 24 4 1 3 22 35 2 1 23 36 

我能够读取到pandas数据框的文件:

 for f in files: datestring = f.split('.')[0] date = datetime.strptime(datestring, '%Y%m%d') df = pd.read_excel(f, 0) df['Date'] = date 

我可以使用所有数据( dfAll.append(df) )创build一个大数据dfAll.append(df)并在数据xr.Dataset.from_dataframe(df)和数据集之间进行转换( xr.Dataset.from_dataframe(df) )。 但是,我无法重新索引和组织数据集,如图所示。 我的数据集最终看起来如下所示:

 <xarray.Dataset> Dimensions: (index: 120) Coordinates: * index (index) int64 106 107 108 109 ... Data variables: X (index) float64 1 1 1 2 ... Y (index) float64 1 2 3 1 ... Temp (index) float64 21 24 22 23 ... Prec (index) float64 34 40 35 36 ... Date (index) datetime64[ns] 2017-01-02 2017-01-02 2017-01-02 ... 

我怎样才能重新组织我的数据,例如? 哪些操作应该在pandas和xarray中完成? 基本上我想把date,X和Y作为标签,Temp和Prec数据作为我的variables。

为了使xarray.Dataset.from_dataframe做正确的事情,你需要在MultiIndex上添加你想要变成维度的列到MultiIndex中。

对于你的例子,试试: xarray.Dataset.from_dataframe(df.set_index(['X', 'Y', 'Date'])