假设我有一个包含一些缺失值的数据框,如下所示:
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中轻松实现。)
答案 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