使用类似的行填充python pandas数据框中的缺失行

时间:2019-10-21 10:15:06

标签: python pandas numpy missing-data

假设我有这种数据框:

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,最好仅使用这两行的平均值(1,2)。 如何对大型数据集进行概括?

  • 对于纬度/经度中含有NaN数据的每一行,
    • 查找具有相同邮政编码的其他行
    • 然后计算平均值
    • 并用它来代替NaNs

1 个答案:

答案 0 :(得分:2)

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
相关问题