Заполните недостающие строки в кадре данных Python Pandas, используя похожие строки - PullRequest
1 голос
/ 21 октября 2019

Предположим, у меня есть такой тип Dataframe:

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 в широте / долготе,
    • Найти другие строки с таким же почтовым индексом
    • затем вычислите среднее значение
    • и используйте его для замены NaN

1 Ответ

2 голосов
/ 21 октября 2019

IIUC,

groupby, transform, fillna()

Сначала мы выбираем фрагмент нашего информационного кадра и используем 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...