【问题标题】:Fill missing value with conditional binary indicator使用条件二进制指示符填充缺失值
【发布时间】:2021-02-10 03:55:48
【问题描述】:

我正在寻找根据评估另一个特征变量的条件用 1 或 0 填充缺失值的方法。

数据集的简化形式:

**Show       Time_watched    Completed**
GOT             400            1
The Office     424            1
Breaking Bad    325            0
GOT             325            0
The Office      344            NaN
Breaking Bad    325            1

我想用以下条件填充缺失值: 如果 Time_watched 大于该节目的平均/第三分位数 time_watched,则填写 1 否则 0

在上面的示例中,要在已完成的列中填充 NaN,理想情况下,函数应将 344 分钟与“办公室”节目的平均观看时间进行比较,并决定插入 1 或 0。

我正在尝试不同的 fillna、groupby、transform 和 lambda 函数组合,但我无法生成所需的输出。 感谢帮助

【问题讨论】:

    标签: python-3.x pandas dataframe data-science


    【解决方案1】:

    试试这个:

    mean_val = df.groupby("Show")["Time_watched"].transform("mean")
    df["Completed"] = (
        df["Completed"].fillna((df["Time_watched"] > mean_val)).astype(int)
    )
    

    输出:

               Show  Time_watched  Completed
    0           GOT           400          1
    1    The Office           424          1
    2  Breaking Bad           325          0
    3           GOT           325          0
    4    The Office           344          0
    5  Breaking Bad           325          1
    

    首先,使用groupbytransform 计算平均值,然后比较每个值和fillna


    分位数 75%

    q75 = df.groupby("Show")["Time_watched"].transform(pd.Series.quantile, q=.75)
    df['Complete'] = df["Completed"].fillna((df["Time_watched"] > q75)).astype(int)
    

    输出:

               Show  Time_watched  Completed  Complete
    0           GOT           400        1.0         1
    1    The Office           424        1.0         1
    2  Breaking Bad           325        0.0         0
    3           GOT           325        0.0         0
    4    The Office           344        NaN         0
    5  Breaking Bad           325        1.0         1
    

    【讨论】:

    • 修改了black的代码,使其与PEP-8一致。如果不好,请随时恢复。
    • 我喜欢黑色....你在 Jupyter Notebook 中使用它吗?
    • 终端没有。我编写了一个脚本,将剪贴板中的内容转储到.py,然后将该文件传递给black
    • 谢谢切斯特,有没有办法与转换中的第 75 个百分位值进行比较?
    猜你喜欢
    • 2020-10-02
    • 2021-06-26
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    相关资源
    最近更新 更多