【问题标题】:Combine mutiple variables within netCDF file在 netCDF 文件中组合多个变量
【发布时间】:2022-11-19 00:10:05
【问题描述】:

抱歉,如果这是一个基本问题,我是这些工具的新手。

我有一个 netcdf 文件,其中包含八个变量,其中包含来自同一来源但不同时间段的数据。跨时间维度的变量之间没有重叠。如何将所有 8 个变量组合成一个不包含缺失数字的“CHIRPS_p_d”变量?

print(ds)
<xarray.Dataset>
Dimensions:      (time: 14244, cluster: 5548)
Coordinates:
  * time         (time) datetime64[ns] 1981-01-01 1981-01-02 ... 2019-12-31
  * cluster      (cluster) object 'Ethiopia 1' 'Ethiopia 2' ... 'Uganda 619'
Data variables:
    lat          (time, cluster) float64 3.456 3.55 3.864 3.983 ... nan nan nan
    lon          (time, cluster) float64 39.52 39.18 39.1 38.49 ... nan nan nan
    CHIRPS_p_d1  (time, cluster) float64 0.0 0.0 0.0 0.0 0.0 ... nan nan nan nan
    CHIRPS_p_d2  (time, cluster) float64 nan nan nan nan nan ... nan nan nan nan
    CHIRPS_p_d3  (time, cluster) float64 nan nan nan nan nan ... nan nan nan nan
    CHIRPS_p_d4  (time, cluster) float64 nan nan nan nan nan ... nan nan nan nan
    CHIRPS_p_d5  (time, cluster) float64 nan nan nan nan nan ... nan nan nan nan
    CHIRPS_p_d6  (time, cluster) float64 nan nan nan nan nan ... nan nan nan nan
    CHIRPS_p_d7  (time, cluster) float64 nan nan nan nan nan ... nan nan nan nan
    CHIRPS_p_d8  (time, cluster) float64 nan nan nan nan nan ... 0.0 0.0 0.0 0.0

现在我的数据是这样的:

>>> print(df.sample(5))
                         CHIRPS_p_d1  CHIRPS_p_d2       lat       lon  CHIRPS_p_d3  CHIRPS_p_d4  CHIRPS_p_d5  CHIRPS_p_d6  CHIRPS_p_d7  CHIRPS_p_d8
time       cluster
2014-10-16 Tanzania 265          NaN          NaN  -8.83643  39.47150          NaN          NaN          NaN          NaN          0.0          NaN
2018-02-28 Mali 122              NaN          NaN  12.12839  -4.68048          NaN          NaN          NaN          NaN          NaN          0.0
1999-10-26 Tanzania 77           NaN          NaN -10.72684  39.50261          NaN          0.0          NaN          NaN          NaN          NaN
1985-08-17 Nigeria 504           NaN     0.000000   9.09914   7.27965          NaN          NaN          NaN          NaN          NaN          NaN
1986-08-02 Niger 181             NaN     0.672992  15.38926   5.25865          NaN          NaN          NaN          NaN          NaN          NaN

理想情况下,我想获得这样的东西

                         CHIRPS_p_d      lat       lon  
time       cluster
2014-10-16 Tanzania 265      0.0       -8.83643   39.47150
2018-02-28 Mali 122          0.0        12.12839  -4.68048
1999-10-26 Tanzania 77       0.0       -10.72684  39.50261 
1985-08-17 Nigeria 504       0.0         9.09914   7.27965
1986-08-02 Niger 181         0.672992   15.38926   5.25865

【问题讨论】:

  • 欢迎来到 SO。 “崩溃”是什么意思?你想平均吗?
  • 谢谢你。从广义上讲,我想将它们组合成一个新变量,其中每个值都等于在 8 个变量之一中找到的唯一非缺失值。平均应该工作,我想?
  • 请在问题中澄清这一点。另外,请确保您在询问之前知道自己在询问什么

标签: python netcdf python-xarray netcdf4


【解决方案1】:

您可以将 NaN 值替换为 0,然后添加所有 CHIRPS_p_d 变量。由于按时间步长只有一个 CHIRPS_p_d 具有非 NaN 值,因此这应该可以解决问题:

ds.fillna(0.0)
result = ds["CHIRPS_p_d1"] + ... + ds["CHIRPS_p_d8"]

【讨论】:

  • 我编辑了问题以添加示例,希望这会有所帮助
  • 我编辑了我的答案。您能否提供真实数据,即包含我们可以使用 xarray/pandas 加载的 df 数据的文件?
猜你喜欢
  • 2020-06-26
  • 2016-02-15
  • 2018-10-10
  • 2020-03-10
  • 2021-11-14
  • 1970-01-01
  • 2021-02-28
  • 2015-05-11
  • 2015-09-05
相关资源
最近更新 更多