将日常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'])
。