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
假设我有一个包含一些缺失值的数据框,如下所示:
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