将每日Excel数据组织到xarray数据集中

时间:2017-01-28 00:03:46

标签: python excel pandas python-xarray

让我们说我想使用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;预先数据作为我的变量。

1 个答案:

答案 0 :(得分:1)

要使xarray.Dataset.from_dataframe做正确的事情,您需要将要转换为维度的列添加到DataFrame上的MultiIndex

对于您的示例,请尝试:xarray.Dataset.from_dataframe(df.set_index(['X', 'Y', 'Date'])