2

假设我想使用 xarray 处理一些日常天气数据,其组织方式类似于 xarray 文档中的这个示例:

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

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

我能够将文件读入熊猫数据框:

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 ...

如何像示例一样重新组织我的数据?哪些操作应该在 pandas 中进行,哪些在 xarray 中?基本上我希望将日期、X 和 Y 作为标签,并将 Temp & Prec 数据作为我的变量。

4

1 回答 1

2

为了xarray.Dataset.from_dataframe做正确的事情,您需要将要转换为维度的列添加到MultiIndexDataFrame 中。

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

于 2017-01-28T00:38:41.043 回答