在数据集中,我正在处理的某些经度和纬度值缺少小数点,为此,我创建了一个函数来处理该问题。
在第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"])
答案 0 :(得分:3)
错误是因为您要传递整个Series而不是列名作为参数,所以函数loc
将在列名,要传递的列的值中查找,并且没有像这样命名的列,这就是错误的原因,所以请尝试更改:
clean_latitude_longitude(df, df["latitude"], df["longitude"])
收件人:
clean_latitude_longitude(df, "latitude", "longitude")