在熊猫数据帧(Python)中使用for-loop



我在Python中有一个数据帧(df(,它有一些功能,但我将使用AgeAge_Mean列。

Age列中,有几个null值。我想用列中的相同索引替换Age_Mean空值。

这是我使用的代码:

    for i in df:
        if df['Age'].isnull().iloc[i] == True:
            df['Age'].iloc[i] == df['Age_Mean'].iloc[i]

这是我的错误消息:

键错误:"标签 [年龄] 不在 [索引] 中">

请让我知道此代码有什么问题。

语句for i in df将循环访问列名。让我们举一个例子来更好地理解这一点:

df = pd.DataFrame({"Age":np.array([2,3,np.nan,8,np.nan]),"Age_mean":np.array([2,5,9,2,1])})
df

因此,数据框将如下所示:

    Age Age_mean
0   2.0 2
1   3.0 5
2   NaN 9
3   8.0 2
4   NaN 1

现在让我们看看 for 循环将迭代的内容:

for i in df:
     print(i)

输出

Age
Age_mean

现在,当您尝试执行df['Age'].isnull().iloc[i]时,它将抛出错误,因为在这种情况下i的值将被Age

建议的解决方案:

我们可以在没有 for 循环的情况下做到这一点,如下所示:

nan_index = df['Age'].index[df['Age'].apply(np.isnan)]
df.loc[nan_index,"Age"] = df.loc[nan_index,"Age_mean"]

第一行将返回NaN Age 值的行的索引。一旦我们知道我们只是用列中的值替换它们 Age_mean 这是由第二个语句完成的。

输出

    Age Age_mean
0   2.0 2
1   3.0 5
2   9.0 9
3   8.0 2
4   1.0 1

最新更新