我目前正在尝试将netcdf文件转换为dataframe。我使用的是以下数据:https://www.ufz.de/export/data/2/248980_SMI_SM_L02_Oberboden_monatlich_1951-2020_inv.nc
该文件包含以下信息:
int32时间(时间) standard_name: time long_name:时间单位:天数自1951-01-16 00:00:00日历:标准轴:T无限维度:时间当前形状= (840,)填充int32东(东)轴:X无限维度:当前形状= (175,)填充int32北向轴:Y无限维度:当前形状= (225,)填充netCDF4.Variable‘> float32 SMI(时间,北,东) long_name:土壤湿度指数单位:- _FillValue:-9999.0 missing_value:-9999.0无限维度:时间当前形状=(840225,175)填充netCDF4.Variable’> float64 lat(北,东) long_name:纬度单位: degrees_north _FillValue:-9999.0 missing_value:-9999.0无限维度:当前形状= (225,_netCDF4.Variable‘> float64 lon(北距,东距) long_name:经度单位: degrees_east _FillValue:-9999.0 missing_value:-9999.0无限尺寸:当前形状= (225,175)填充
我的目标是过滤SMI值(还包含有关时间、北距、东距的信息),并将它们转换为数据帧。
我当前的代码如下:
import os
from matplotlib import pyplot as plt
import pandas as pd
import netCDF4
import numpy as np
import xarray as xr
# Define directory
os.chdir('C:/Users/Documents/Project/ClimateRisks')
dp = xr.open_dataset('SMI_Oberboden.nc')
dp = dp.SMI
m2 = dp.to_dataframe()
m2 = m2.dropna()
print(m2.head(15))结果如下:
SMI
time northing easting
1951-01-16 5238000 4360000 0.445849
4364000 0.473440
4368000 0.309218
5242000 4364000 0.365326
4368000 0.426184
4372000 0.344188
4376000 0.284556
5246000 4364000 0.390772
4368000 0.521810
4372000 0.586828
4376000 0.344797
4380000 0.394820
5250000 4356000 0.470163
4360000 0.619951
4364000 0.540267问题是最终的数据帧只有一列(SMI),而其余的(时间、北距、东距)不被视为列。我的目标是最终拥有四列(time、northing、easting、SMI)。由于我还是个新手,我将非常感谢您的帮助。
发布于 2021-02-12 17:30:56
您只需重置索引即可。因此,将倒数第二行改为:
m2 = m2.dropna().reset_index()https://stackoverflow.com/questions/66169106
复制相似问题