无法将 xarray 数据帧转换为 pandas 数据帧
cannot convert xarray dataframe to pandas dataframe
我需要在 pandas 中使用一些 *.nc 文件,我正在为转换而苦苦挣扎。
这是数据集 DS1:
<xarray.Dataset>
Dimensions: (latitude: 51, longitude: 51, time: 47)
Coordinates:
* longitude (longitude) float32 15.1 15.2 15.3 15.4 ... 19.8 19.9 20.0 35.0
* latitude (latitude) float32 34.9 34.8 34.7 34.6 ... 30.1 30.0 9.9498e-40
* time (time) object 1981-01-01 02:00:00 ... -243069-06-09 17:00:00
Data variables:
u10 (time, latitude, longitude) float32 nan nan nan ... nan nan nan
v10 (time, latitude, longitude) float32 nan nan nan ... nan nan nan
t2m (time, latitude, longitude) float32 nan nan nan ... nan nan nan
tp (time, latitude, longitude) float32 nan nan nan ... nan nan nan
Attributes:
Conventions: CF-1.6
history: 2021-07-03 16:40:01 GMT by grib_to_netcdf-2.20.0: /opt/ecmw...
和
DS1.to_dataframe()
我收到错误:
NotImplementedError: > 1 ndim Categorical are not supported at this time
我担心 time
坐标 -243069-06-09 17:00:00
是导致此错误的原因,因为它完全超出了我在文件中预期的范围。
Here is a link to original file.
感谢任何帮助。
最终我通过简单地过滤掉负时间维度来解决这个问题
DS1.where(DS1.time>cftime.DatetimeGregorian(1980, 1, 1,1),drop=True).to_dataframe()
不确定它是如何创建这个额外维度的,但它解决了我的问题。
感谢您付出时间和精力@timus。
我需要在 pandas 中使用一些 *.nc 文件,我正在为转换而苦苦挣扎。 这是数据集 DS1:
<xarray.Dataset>
Dimensions: (latitude: 51, longitude: 51, time: 47)
Coordinates:
* longitude (longitude) float32 15.1 15.2 15.3 15.4 ... 19.8 19.9 20.0 35.0
* latitude (latitude) float32 34.9 34.8 34.7 34.6 ... 30.1 30.0 9.9498e-40
* time (time) object 1981-01-01 02:00:00 ... -243069-06-09 17:00:00
Data variables:
u10 (time, latitude, longitude) float32 nan nan nan ... nan nan nan
v10 (time, latitude, longitude) float32 nan nan nan ... nan nan nan
t2m (time, latitude, longitude) float32 nan nan nan ... nan nan nan
tp (time, latitude, longitude) float32 nan nan nan ... nan nan nan
Attributes:
Conventions: CF-1.6
history: 2021-07-03 16:40:01 GMT by grib_to_netcdf-2.20.0: /opt/ecmw...
和
DS1.to_dataframe()
我收到错误:
NotImplementedError: > 1 ndim Categorical are not supported at this time
我担心 time
坐标 -243069-06-09 17:00:00
是导致此错误的原因,因为它完全超出了我在文件中预期的范围。
Here is a link to original file.
感谢任何帮助。
最终我通过简单地过滤掉负时间维度来解决这个问题
DS1.where(DS1.time>cftime.DatetimeGregorian(1980, 1, 1,1),drop=True).to_dataframe()
不确定它是如何创建这个额外维度的,但它解决了我的问题。
感谢您付出时间和精力@timus。