Keyerror при попытке добавить десятичные точки к числам с плавающей запятой - PullRequest
2 голосов
/ 06 августа 2020

В наборе данных, в котором я имею дело, для некоторых значений широты и долготы отсутствуют десятичные точки, и для этого я создал функцию для решения этой проблемы.

Я получаю сообщение об ошибке в строке 6:

data.loc[data[lat_col] > 90, lat_col] /= 1000

И я предполагаю, что строка 7 даст мне ту же ошибку.

Ошибка:

KeyError: "None of [Float64Index([55.6902,     0.0,     0.0,     0.0, 55.6775,     0.0,     0.0,\n                  0.0,     0.0,     0.0,\n              ...\n                  0.0,     0.0,     0.0, 55.9379, 55.9379, 55.9379, 55.9379,\n              55.9379, 55.9378,     0.0],\n             dtype='float64', length=143820)] are in the [columns]"

Данные

    latitude    longitude
0   12.57220    55.69020
1   0.00000     0.00000
2   0.00000     0.00000
4   0.00000     0.00000
5   12.57700    55.67750
6   0.00000     0.00000
7   0.00000     0.00000
8   0.00000     0.00000
9   0.00000     0.00000
10  0.00000     0.00000
11  0.00000     0.00000
12  0.00000     0.00000
14  12.58440    55.67970
15  12.58230    55.67930
16  12.58478    55.67996
17  12.58477    55.67996
18  12.59170    55.67980
...

Функция

def clean_latitude_longitude(data, lat_col, lon_col):
    """Fixes lat & lon values, some of them are missing decimal points.
    """
    #data = data.copy()

    data.loc[data[lat_col] > 90, lat_col] /= 1000
    data.loc[data[lon_col] > 180, lon_col] /= 1000
    return data

dff = clean_latitude_longitude(df, df["latitude"], df["longitude"])

1 Ответ

3 голосов
/ 06 августа 2020

Ошибка, потому что вы передаете в качестве аргумента всю серию вместо имени столбца, поэтому функция loc будет искать в именах столбцов, значениях столбца, который вы передаете, и нет столбцов с именами вот в чем причина ошибки, поэтому попробуйте изменить:

clean_latitude_longitude(df, df["latitude"], df["longitude"])

To:

clean_latitude_longitude(df, "latitude", "longitude")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...