Saya memiliki dua file NetCDF:

Data1.shape = (177, 180, 360) 
Data2.shape = (179, 180, 360))

Date1=  {list: 177}['2002-04', '2002-05', '2002-06', … ]
Date2 = {list: 179}['2002-04', '2002-05', '2002-08', … ]

Saya ingin memfilter/mengekstrak hanya data yang cocok dengan Date1.

Saya harus menyebutkan bahwa format Tanggal dari dua file NetCDF berbeda dan saya mengubahnya agar konsisten.

Saya mencoba berbagai cara seperti groupby, Timestamp, dan membaca dokumen dari indeks waktu tertentu. Namun, saya menemukan mereka tidak berfungsi untuk data 3D (waktu, lon, lat).

0
Ehsan 27 Februari 2020, 23:50

1 menjawab

Jawaban Terbaik

Terpecahkan:

data1 = xr.open_dataset('path\to\my\data\data_1.nc4')

<xarray.Dataset>
Dimensions:                (lat: 180, lon: 360, time: 212)
Coordinates:
  * time                   (time) datetime64[ns] 2002-04-01 ... 2019-11-01
  * lon                    (lon) float32 -179.5 -178.5 -177.5 ... 178.5 179.5
  * lat                    (lat) float32 89.5 88.5 87.5 ... -87.5 -88.5 -89.5

Data variables:
Evap_tavg              (time, lat, lon) float32 ...

Membaca data kedua.

data2 = xr.open_dataset('path\to\my\data\data_2.nc4')

 <xarray.Dataset>
    Dimensions:                (lat: 180, lon: 360, time: 212)
    Coordinates:
      * time                   (time) datetime64[ns] 2003-01-01 ... 2016-12-01
      * lon                    (lon) float32 -179.5 -178.5 -177.5 ... 178.5 179.5
      * lat                    (lat) float32 89.5 88.5 87.5 ... -87.5 -88.5 -89.5

    Data variables:
    Evap              (time, lat, lon) float32 ...

Mereka memiliki beberapa data pada tanggal/waktu yang sama, bahwa kami ingin mengekstrak data tersebut dari tanggal/waktu yang sama.

my_new_data =  data1.where(data1['time'].isin(data2['time']),  drop=True)
0
Ehsan 9 April 2020, 22:34