首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用for循环传递错误,并使用None填充行

使用for循环传递错误,并使用None填充行
EN

Stack Overflow用户
提问于 2021-03-31 12:27:40
回答 1查看 39关注 0票数 0

我使用for循环遍历数据框中的行,并对其中两列中的值应用函数,以便使用geopy从城市名称中获取坐标。一些值抛出错误,我想使用try / except (或catch?)在for循环中,以便在将geopy应用于其中一个值抛出错误的情况下,python只需使用'None‘填充该行,然后我可以返回并使用'None’删除这些行。有没有办法做到这一点?下面是我正在使用的代码:

代码语言:javascript
运行
复制
list_lat = []   # create empty list for lat
list_long = [] # create empty list for long

for index, row in df.iterrows(): # iterate over rows in dataframe
    try:
        City = row['City Name']
        State = row['State Name']       
        query = str(City)+','+str(State)

        location = geolocator.geocode(query)
        lat = location.latitude
        long = location.longitude
        #print(lat, long) #testing purposes

        list_lat.append(lat)
        list_long.append(long)
    
    
    except Exception as e:
        
#         lat = 'None'
#         long = 'None'

EN

回答 1

Stack Overflow用户

发布于 2021-03-31 13:17:17

如果您希望将lat和long添加为列,可以尝试如下所示。

代码语言:javascript
运行
复制
def fn(row):
    city = row['City Name']
    State = row['State Name']       
    query = str(City)+','+str(State)
    try:
        location = geolocator.geocode(query)
        lat = location.latitude
        long = location.longitude
        return lat,long
    except:
        return np.NaN,np.NaN

df[['lat','long']] = df.apply(lambda x: fn(x),axis=1,result_type='expand')

这将产生2个额外列,其中包含对应的lat和long result from。

要删除NaN值,您可以使用

代码语言:javascript
运行
复制
df.dropna()

但请记住,对于庞大的数据集,单独迭代每一行可能会很慢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66881652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档