ValueError: invalid literal for int() with base 10 : '81?36N'

ValueError: invalid literal for int() with base 10 : '81?36N'

Traceback (most recent call last):
  File "/Users/HectorVelasquez/PycharmProjects/Project 1/Project 1 python.py", line 57, in <module>
    df['log'] = df['Latitude'].apply(lambda x: convert_rad(x))
  File "/Users/HectorVelasquez/PycharmProjects/Project 1/venv/lib/python3.7/site-packages/pandas/core/series.py", line 4045, in apply
    mapped = lib.map_infer(values, f, convert=convert_dtype)
  File "pandas/_libs/lib.pyx", line 2228, in pandas._libs.lib.map_infer
  File "/Users/HectorVelasquez/PycharmProjects/Project 1/Project 1 python.py", line 57, in <lambda>
    df['log'] = df['Latitude'].apply(lambda x: convert_rad(x))
  File "/Users/HectorVelasquez/PycharmProjects/Project 1/Project 1 python.py", line 7, in convert_rad
    degree = int(temp[0]) + int(temp[1][:-1])/60
ValueError: invalid literal for int() with base 10: '81?36N'

文本文件 我不知道如何修复错误。

纬度经度城市Province/State国家

81?36N 16?40W 北格陵兰丹麦

79?59N 85?56W 尤里卡努纳武特加拿大

78?55N 11?56E Ny-?lesund 斯瓦尔巴挪威

78?13N 15?39E 朗伊尔城斯瓦尔巴挪威

转换函数

def convert_rad(lon):
    temp = lon.split('°')
    degree = int(temp[0]) + int(temp[1][:-1])/60
    direction = temp[1][-1]
    if direction=='N' or direction=='E':
        sign = 1
    elif direction=='S' or direction=='W':
        sign = -1

return degree*sign*np.pi/180
Latitude_66N = convert_rad('66°0N')
Latitude_35N_66N = convert_rad('35°0N')
Latitude_35S_35N = convert_rad('35°0S')
Latitude_35S_66S = convert_rad('66°0N')
Latitude_66S = convert_rad('66°0N')
lon = convert_rad('37°22N')
lat = convert_rad('120°42W')

Image: Line 57

尝试稍微调试一下您的问题并询问它的最小版本,并使用足够的代码在其他地方重现它(例如文件和函数)。如果您查看回溯,您会发现错误在第一行。一般来说,文本比文本截图有用得多。话虽这么说

df = pd.read_csv('cities.txt', sep='\t', encoding='latin_1')
df['log'] = df['Latitude'].apply(lambda x: convert_rad(x))

忽略向后的 'log''Latitude',我可以从你的回溯中看到你的自定义函数 convert_rad

degree = int(temp[0]) + int(temp[1][:-1])/60

其中某处。尝试查看您的 csv 文件中的字符串 81?36N,或者只使用文件的前几行。