我有一个 Python 数据框 (df),具有一些功能,但我将使用 Age
和 Age_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]
这是我的错误消息:
KeyError: 'the label [Age] is not in the [index]'
请告诉我这段代码有什么问题。
最佳答案
语句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
的值> 在这种情况下将是年龄
。
建议的解决方案:
我们可以在没有 for 循环的情况下完成此操作,如下所示:
nan_index = df['Age'].index[df['Age'].apply(np.isnan)]
df.loc[nan_index,"Age"] = df.loc[nan_index,"Age_mean"]
第一行将返回 Age
值为 NaN
的行的索引。一旦我们知道,我们只需将它们替换为 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
关于python - 在 Panda DataFrame 中使用 For 循环 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56683090/