在Panda DataFrame(Python)中使用前循环

时间:2019-06-20 09:37:17

标签: python pandas

我在 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]

这是我的错误消息:

  

KeyError:“标签[Age]不在[index]中”

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

1 个答案:

答案 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

希望这会有所帮助!