熊猫:将缺失值输入数据框

时间:2018-01-27 04:51:05

标签: pandas imputation

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

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中轻松实现。)

1 个答案:

答案 0 :(得分:1)

在熊猫中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