用邻居的平均值为 geopandas 数据框估算 NaN

问题描述

我有一个 geopandas 数据框,其中列中有 NaN。我想用其邻居的平均值来估算 NaN。我编写了以下示例,如果有人能帮助我完成最后的步骤,我将不胜感激。谢谢。

# Load libraries
import numpy as np
import pandas as pd
import geopandas as gpd
from libpysal.weights.contiguity import Queen

# Make data
world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
africa = world[world['continent'] == 'Africa']
africa.reset_index(inplace=True,drop=True)
africa.loc[[2,8,15,22,30,35,39,43],'pop_est'] = np.nan # Make NaN value for pop_est
africa

# Generate weight
w = Queen.from_dataframe(africa)
w.neighbors[2] # Check neighbors of index 2

例如,index 2 在人口估计上有一个缺失值,它的邻居是 [0,36,48,49,50,27,28,31]。我想使用 [0,31] 的总体估计平均值来替换 NaN。谢谢。

解决方法

我终于知道怎么做了。