我在 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:“标签[Age]不在[index]中”
请让我知道这段代码有什么问题。
答案 0 :(得分:2)
语句import com.fasterxml.jackson.datatype.jsonorg.JsonOrgModule;
mapper.registerModule(new JsonOrgModule());
将遍历列名。让我们举个例子来更好地理解这一点:
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
现在让我们看看for循环将要迭代的内容:
Age Age_mean
0 2.0 2
1 3.0 5
2 NaN 9
3 8.0 2
4 NaN 1
输出
for i in df:
print(i)
现在,当您尝试执行Age
Age_mean
时,将会抛出错误,因为在这种情况下df['Age'].isnull().iloc[i]
的值为i
。
建议的解决方案:
我们可以在没有for循环的情况下执行此操作,如下所示:
Age
第一行将返回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
希望这会有所帮助!