Pandas:将缺失值输入数据框

Pandas: Imputing Missing Values to Data Frame

假设我有一个包含一些缺失值的数据框,如下所示:

import pandas as pd

df = pd.DataFrame([[1,3,'NA',2], [0,1,1,3], [1,2,'NA',1]], columns=['W', 'X', 'Y', 'Z'])
print(df)

变量 Y 缺少两个值。假设我 运行 一些插补模型并估计出这两个值应该是什么:

to_impute = [2,1]

用这两个值替换两个 NA 的最佳方法是什么?我知道相当迂回的方式,例如遍历 to_impute 并使用 df.iloc 添加每个值。但我希望有一种简洁且非迭代的方式。

(这在 R 中很容易,我希望它在 Pandas 中也能很容易。)

在pandas中NA应该是NaN,首先你需要replace它,然后我们可以使用fillna

df.Y=df.Y.replace('NA',np.nan)
df.Y=df.Y.fillna(pd.Series([1,2],index=df.index[df.Y.isnull()]))
df
Out[1375]: 
   W  X    Y  Z
0  1  3  1.0  2
1  0  1  1.0  3
2  1  2  2.0  1

让我们将您的 NA 视为 str

df.loc[df.Y=='NA','Y']=[1,2]
df
Out[1380]: 
   W  X  Y  Z
0  1  3  1  2
1  0  1  1  3
2  1  2  2  1