如何替换 pandas 上筛选的多列中的 nan 值?

How can I replace nan values from filtered multiple columns on pandas?

我想单独清理数据框中的 NaN 值。我使用了一些过滤器来查找 NaN 值。但同一过滤器检测到另一列包含 NaN 值。这种情况让我很困惑。我尝试了很多方法,但这些 NaN 值没有改变。

先看我的dataframe;

Raw DataFrame

When the applied filters

pop[(pop['Log GDP per capita'].isna())][(pop['Country name'])=='Somalia']

我用了很多方法,都改不了

# Method 1
pop[(pop['Log GDP per capita']).isna()]['Log GDP per capita'].fillna(8,inplace=True)
# Method 2
pop['Log GDP per capita'] = pop['Log GDP per capita'].replace(np.nan,8,inplace=True)
# Method 3
pop[(pop['Log GDP per capita'].isna())][(pop['Country name'])=='Somalia']['Log GDP per capita'].replace(np.nan,7.6,inplace=True)
# Method 4
pop[(pop['Log GDP per capita'].isna())][(pop['Country name'])=='Somalia'].mask(pop['Log GDP per capita']=='', 7.946, inplace=True)
# Method 5
pop[(pop['Log GDP per capita'].isna())][(pop['Country name'])=='Somalia'].mask(pop['Log GDP per capita']==pd.np.nan, 7.946, inplace=True)
# Method 6
pop[(pop['Log GDP per capita'].isna())][(pop['Country name'])=='Somalia'].mask(pop['Log GDP per capita']==np.nan, 7.946, inplace=True)
# Method 7
pop.loc([(pop['Country name']=='Somalia')]['Log GDP per capita'])=7.946 

我该如何改进?

Kaggle Notebook

也许您会尝试替换每列的 Nan 值

或者你的数据框中需要这个 Nan 值的研究 id

使用.loc:

mask = pop['Log GDP per capita'].isna() & pop['Country name'].eq('Somalia')
pop.loc[mask, 'Log GDP per capita'] = 8