【问题标题】:Pandas DF to Xarray DatasetPandas DF 到 Xarray 数据集
【发布时间】:2021-06-14 02:25:07
【问题描述】:

您好,最初我的 Xarray 数据集如下:

<xarray.Dataset>
Dimensions:    (latitude: 721, longitude: 1400, time: 71)
Coordinates:
  * time       (time) datetime64[ns] 2000-12-31 2001-12-31 ... 2018-12-31
  * longitude  (longitude) float32 -22.5 -21.75 -21.0 -20.25 ... 43.5 44.25 45.0
  * latitude   (latitude) float32 72.0 71.25 70.5 69.75 ... 28.5 27.75 27.0
Data variables:
    tas      (time, latitude, longitude) float64 5.033e+05 ... 1.908e+05

现在我将其转换为数据框并在latitude and longitude 上使用 groupby 函数来获取所有时间维度上的 tas 值,这是样本 df 将具有 1038239 records(721 * 1440) 并且 tas 将具有 71 values(71 time) 数组:

latitude    longitude   tas
-90.0        358.75     [50603.53125, 50002.609375, 50183.98828125, 49...
-90.0        359.00     [50603.53125, 50002.609375, 50183.98828125, 49...
-90.0        359.25     [50603.53125, 50002.609375, 50183.98828125, 49...
-90.0        359.50     [50603.53125, 50002.609375, 50183.98828125, 49...
-90.0        359.75     [50603.53125, 50002.609375, 50183.98828125, 49...

现在我执行了一些操作并创建了新列tas_new,其大小与tas 相似。现在我想创建新数据集或将此变量添加到具有相同维度(time, latitude, longitude) 的旧数据集中。但我无法将它重塑回旧的。

我尝试从tas_new 获取所有值并将它们堆叠起来,如下所示:

array_tuple = (df_groups['trend'].values)
arrays = np.vstack(array_tuple)

这确实返回了我的形状数组(1038239, 71)。有人可以指导我如何恢复原始形状并将该变量添加到 xarray 数据集或创建新的。

预期结果:

<xarray.Dataset>
Dimensions:    (latitude: 721, longitude: 1400, time: 71)
Coordinates:
  * time       (time) datetime64[ns] 2000-12-31 2001-12-31 ... 2018-12-31
  * longitude  (longitude) float32 -22.5 -21.75 -21.0 -20.25 ... 43.5 44.25 45.0
  * latitude   (latitude) float32 72.0 71.25 70.5 69.75 ... 28.5 27.75 27.0
Data variables:
    tas      (time, latitude, longitude) float64 5.033e+05 ... 1.908e+05
    tas_new  (time, latitude, longitude) float64 5.033e+05 ... 1.908e+05

或来自数据框的维度为(time, latitude, longitude) 的数组。

【问题讨论】:

    标签: python pandas dataframe pandas-groupby python-xarray


    【解决方案1】:

    所以,一旦我有了arrays = np.vstack(array_tuple),我就将它们转换为形状为(1038239*71) 的整个列表,然后添加与它的经纬度对对应的原始数据框。然后将整个数据帧转换回xarray。

    PS:所以对于低内存(

    如果以后有人想要详细或明确的答案,请在此处发表评论,我会尽量使其更准确。

    【讨论】:

      猜你喜欢
      • 2021-10-26
      • 2021-08-29
      • 2017-03-31
      • 2015-12-12
      • 1970-01-01
      • 2016-12-14
      • 2020-05-27
      • 2017-09-20
      • 2018-08-20
      相关资源
      最近更新 更多