问题描述
我目前正在尝试将 netcdf 文件转换为数据帧。我正在使用以下数据: https://www.ufz.de/export/data/2/248980_SMI_SM_L02_Oberboden_monatlich_1951-2020_inv.nc
该文件包含以下信息:
我的目标是过滤 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),而其余的(时间、北距、东距)不被视为列。我的目标是最终有四列(时间、北距、东距、SMI)。由于我对此还很陌生,因此非常感谢您的帮助。
解决方法
您只需要重置索引。所以将倒数第二行改为:
m2 = m2.dropna().reset_index()