【问题标题】:add two values to the same column in python在python的同一列中添加两个值
【发布时间】:2021-11-07 19:14:25
【问题描述】:

我想在同一列中添加两个值,但我不确定这是否可能, 我实际上只想将城市添加到位置列,但问题是我有一个名为addresses 的列表,它包含整个地址并且它们都是不同的(甚至长度),我已经使用此代码只添加城市,但问题是有时城市在位置 len(addresses[i])-4 上,有时不在,所以我想添加两个值,我的意思是 len(addresses[i])-4 and len(addresses[i])-5 到位置列,但有可能吗?

coordinates=[]
for i in range(10):
    coordinates.append(np.array([ [df_new['latitude'][i],df_new['longitude'][i]]]))

addresses = []

for coordinate in coordinates:
    addresses.append(geolocator.reverse(coordinate).address)
    
for i in range(10):
    addresses[i]=addresses[i].split(', ')
    df_new['location'][i]=addresses[i][len(addresses[i])-4]

这是“地址”列表的外观示例:

['2', 'ottstraße', 'Fechenheim', 'Ost', 'Frankfurt am Main', 'Hessen', '60386', 'Deutschland']
['7', 'Ring', 'Jungen', 'Ulm', 'Baden-Württemberg', '89066', 'Deutschland']
['Roland', 'Schön', 'Sandesneben', 'Lauenburg', 'Schleswig-Holstein', '25629', 'Deutschland']
['Zeiskliniken', '101', 'waldstraße', 'Yorckgebiet', 'Chemnitz', 'Sachsen', '99130', 'Deutschland']
['8', 'Nieksener Straße', 'Bad Oeynhausen', 'Kreis Minden-Lübbecke', 'Nordrhein-Westfalen', '32678', 'Deutschland']

【问题讨论】:

  • 你怎么知道是-3还是-4?你检查“Kreis”吗?
  • 我的意思是 -5 对不起,因为如果你看最后一行,'bad Oeynhausen 是城市的名称,而不是 -4 @mcsoini 上的 Kreis Minden-Lübbecke 我只是手动检查了!我找不到任何其他方式

标签: python list data-analysis


【解决方案1】:

这只会让您获得城市:

for coordinate in coordinates:
    addresses.append(geolocator.reverse(coordinate).raw['address']['city'])

address 相反,raw 将提供完整地址作为字符串,raw 将为您提供包含可用 osm 数据的字典,包括城市。

【讨论】:

  • 但“城市”没有定义!我该如何定义它?
  • 我得到这个错误,---------------------------------------- -------------------------------------- KeyError Traceback (最近一次调用最后一次) in 6 7 坐标中的坐标:----> 8addresses.append(geolocator.reverse(coordinate).raw['address']['city']) 9 KeyError: 'city '
  • 能否提供样品坐标?另外,您使用什么地理编码器?只是标准的osm?
  • from geopy.geocoders import Nominatim geolocator = Nominatim(user_agent="geoapiExercises")
  • 我修复了它,使用以下代码:for i in range(df_new.shape[0]): if('city' in addresses[i]): df_new['location'][i] =addresses[i]['city'] elif(地址[i]中的'镇'):df_new['location'][i]=addresses[i]['town'] elif(地址[i]中的'村' ]): df_new['location'][i]=addresses[i]['village'] elif ('county' in addresses[i]): df_new['location'][i]=addresses[i][' County'] elif ('state' in addresses[i]): df_new['location'][i]=addresses[i]['state'] else: print(addresses[i]) 我将用户代理编辑为 'latlongconvert'
猜你喜欢
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-30
  • 2020-03-08
  • 2018-08-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多