【问题标题】:Fill missing rows in a python pandas dataframe using similar rows使用类似的行填充 python pandas 数据框中的缺失行
【发布时间】:2019-10-21 10:15:06
【问题描述】:

假设我有这种数据框:

Data:   Lat    Long   Postal Code
    0   41     32     01556
    1   32     31     01023
    2   31     33     01023
    3   NaN    NaN    01023
    4   33     42     01775
    5   40     44     01999

如您所见,第 1、2、3 行的邮政编码相同。因此,为了填充 NaN,最好只使用这 2 行 (1,2) 的平均值。 我如何将其推广到大型数据集?

  • 对于在 Lat/Long 中包含 NaN 数据的每一行,
    • 查找具有相同邮政编码的其他行
    • 然后计算平均值
    • 并使用它来替换 NaN

【问题讨论】:

    标签: python pandas numpy missing-data


    【解决方案1】:

    IIUC,

    groupbytransformfillna()

    我们首先选择数据框的一部分并使用fillna 仅填充缺失值,我们不想覆盖任何现有数据。

    然后我们利用groupby 功能按照您的要求按邮政编码分组。

    我们使用transform 方法返回您的数据及其原始索引和长度。

    我们将其分配给您的列,结果如下。

       df[["Lat", "Long"]] = df[["Lat", "Long"]].fillna(
        df.groupby("Postal Code")["Lat", "Long"].transform("mean"))
        print(df)
              Data   Lat  Long  Postal Code
        0     0  41.0  32.0         1556
        1     1  32.0  31.0         1023
        2     2  31.0  33.0         1023
        3     3  31.5  32.0         1023
        4     4  33.0  42.0         1775
        5     5  40.0  44.0         1999
    

    【讨论】:

    • 我用更多的 NaN 测试了代码,就像一个魅力!这真是太好了,baraka allahu fik!
    • واياك حبيبي عفوا
    猜你喜欢
    • 2019-11-27
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 2021-06-17
    • 2019-06-16
    • 2017-08-14
    • 1970-01-01
    • 2013-06-10
    相关资源
    最近更新 更多