首页 > 解决方案 > 如何从 NC 文件中的变量中提取信息?

问题描述

我正在尝试使用此问题中附加的代码从不同的 NC 文件中提取信息,并且代码工作正常,直到它打开一个没有感兴趣变量信息的文件,一旦它尝试提取信息我收到附加的错误。你能帮我解决这个问题吗?

代码

import glob
from netCDF4 import Dataset
import numpy as np
import pandas as pd

date_range=pd.date_range(start="19980101", end="20200930")
df1=pd.DataFrame(0,columns=["precip"],index=date_range)
lat_alecon = 44.8306
lon_alecon = 0.6914

for day in date_range:
    print(day)
    data = Dataset("gpcp_v01r03_daily_d"+str(day)[0:4]+str(day)[5:7]+str(day)[8:10]+".nc")
    prcp=data.variables['precip']
    lon_data = data.variables['longitude'][:]
    lat_data = data.variables['latitude'][:]
    sq_diff_lat = (lat_data - lat_alecon)**2
    sq_diff_lon = (lon_data - lon_alecon)**2
    min_index_lat = sq_diff_lat.argmin()
    min_index_lon = sq_diff_lon.argmin()
    df1.loc[str(day)]["precip"] = prcp[0, min_index_lat, min_index_lon]

输出和误差

2001-09-09 00:00:00
2001-09-10 00:00:00
2001-09-11 00:00:00
Traceback (most recent call last):

  File "C:\Users\juanj\copernicusData\Precipitation\copernicustable.py", line 43, in <module>
    df1.loc[str(day)]["precip"] = prcp[0, min_index_lat, min_index_lon]

  File "C:\Users\juanj\anaconda3\lib\site-packages\pandas\core\series.py", line 1000, in __setitem__
    self._set_with_engine(key, value)

  File "C:\Users\juanj\anaconda3\lib\site-packages\pandas\core\series.py", line 1035, in _set_with_engine
    self._values[loc] = value

  File "C:\Users\juanj\anaconda3\lib\site-packages\numpy\ma\core.py", line 4383, in __int__
    raise MaskError('Cannot convert masked element to a Python int.')

MaskError: Cannot convert masked element to a Python int.

标签: python-3.xnetcdf4

解决方案


推荐阅读