【问题标题】:Pandas - How can I replace NaN values from next row if values in different column are the same? [duplicate]Pandas - 如果不同列中的值相同,如何替换下一行的 NaN 值? [复制]
【发布时间】:2021-07-20 15:31:41
【问题描述】:

我的 df 如下所示

ID Name     SupervisorID    Date
1  John     NaN             2021-02
1  John     123             2021-03
2  Thomas   NaN             2021-02
2  Thomas   234             2021-03
3  Ann      NaN             2021-02
3  Ann      567             2021-03
4  Alice    NaN             2021-03
5  Mark     324             2021-03

我需要用另一个月的前一个 ID 填写缺少的 SupervisorID(我只有两个日期:2021-02 和 2021-03)。所以如果 SupervisorID 是 NaN 和 ID,Name 列对于 ID 和 Name 是相同的,它应该用 previus ID 填充 SupervisorID,所以 df 应该如下所示:

ID Name     SupervisorID    Date
1  John     123             2021-02
1  John     123             2021-03
2  Thomas   234             2021-02
2  Thomas   234             2021-03
3  Ann      564             2021-02
3  Ann      567             2021-03
4  Alice    NaN             2021-03
5  Mark     324             2021-03

我希望,这很清楚。

最好的问候和感谢您的帮助!

【问题讨论】:

    标签: python pandas dataframe if-statement replace


    【解决方案1】:

    如果每个组合 ID, Name 有不同的月份,请使用 GroupBy.bfill

    df['SupervisorID'] = df.groupby(['ID','Name'])['SupervisorID'].bfill()
    

    【讨论】:

    • 它工作正常。我不得不说我不知道​​ bfill()。这对我来说是新的:) 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多