【问题标题】:Pandas: Imputing Missing Values to Data FramePandas:将缺失值输入到数据框中
【发布时间】:2018-01-27 13:20:44
【问题描述】:

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

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 imputation


    【解决方案1】:

    在 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
    

    【讨论】:

      猜你喜欢
      • 2020-02-16
      • 2020-06-17
      • 2019-06-24
      • 1970-01-01
      • 2013-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多