让我们说我想使用xarray来处理一些日常天气数据,这些数据的组织方式与xarray的文档类似:
但是,数据是在多个Excel文件中提供给我的,其中每个文件包含一天的数据。文件名包含日期信息,文件看起来像这个玩具示例:
X Y 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)
)的大数据框,并在数据框和数据集(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 ...
如何像示例一样重新组织我的数据?应该在熊猫中进行哪些操作以及在xarray中进行哪些操作?基本上我想把日期,X和Y作为标签,以及Temp&amp;预先数据作为我的变量。
答案 0 :(得分:1)
要使xarray.Dataset.from_dataframe
做正确的事情,您需要将要转换为维度的列添加到DataFrame上的MultiIndex
。
对于您的示例,请尝试:xarray.Dataset.from_dataframe(df.set_index(['X', 'Y', 'Date'])
。