如何替换panda上已筛选的多列中的nan值



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

首先看我的数据帧;

原始数据帧

当应用的过滤器

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笔记本

使用.loc:

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

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

将NaN值替换为每列的特定值

或者研究你需要在数据帧中使用这个Nan值的id

最新更新