【问题标题】:Filling null values within a Pandas DataFrame with values from the same column that have a matching value in another column在 Pandas DataFrame 中使用来自同一列且在另一列中具有匹配值的值填充空值
【发布时间】:2019-12-10 12:34:31
【问题描述】:

我有一个 DataFrame,它在给定列中包含空值,在同一个索引中,还有另一列具有重复的非空值。我想弄清楚的是,使用 Pandas 本机函数使用 ID 列作为参考填充这些空值的正确方法是什么。

感谢您的帮助。

原文:

    Company ID
    AAA 100
    BBB 200
    CCC 150
    **NULL  100
    FFF 375
    **NULL  150

格式化:

    AAA 100
    BBB 200
    CCC 150
    **AAA   100
    FFF 375
    **CCC   150

【问题讨论】:

    标签: python-3.x pandas dataframe null series


    【解决方案1】:

    你可以试试:

    df['Company'] = df.groupby('ID')['Company'].transform('first')
    

    正如评论的那样,上面将替换 all Company 而不仅仅是 nan。因此,如果您有多个Company 对应一个ID,它可能会给出错误的结果。相反,您可以这样做:

    df['Company'] = df['Company'].fillna(df.groupby('ID')['Company'].transform('first'))
    

    【讨论】:

    • 我认为这会转换所有具有相同值的行,而不仅仅是那些具有空值的行。
    • @AyoubZAROU 这是真的。我的印象是Company 对于每个ID 应该是唯一的。但这很容易解决。
    猜你喜欢
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多