我试图找到一种从下面的循环中打印最小值的方法。输出既不是列表也不是 numpy 数组(参见下面的输出)。另请参阅我的数据集 df,附在下面。
代码
from geopy.geocoders import Nominatim
df = pd.read_csv("dummy dataset.csv")
cities=['London','Edinburgh','Manchester']
geolocator = Nominatim(user_agent="my-application",timeout=None)
for city in cities:
location = geolocator.geocode(city)
df['GTC'] = df['height']*location.latitude + df['width']*location.longitude
print(city,sum(df['GTC']))
结果
London 44060.839699659
Edinburgh 44707.029210128
Manchester 43565.213231322
我尝试过代码,例如: print("The smallest GTC is: ", min(sum(df['GTC'])))
并尝试创建一个数组: a = np.asarray(sum(df['GTC']))
但这些都不能解决问题。任何帮助表示赞赏
一个不复杂的解决方案如下:
import numpy as np
import pandas as pd
from geopy.geocoders import Nominatim
df = pd.read_csv("dummy dataset.csv")
cities=['London','Edinburgh','Manchester']
geolocator = Nominatim(user_agent="my-application",timeout=None)
mingtc = np.inf
mincity = 'unknown'
for city in cities:
location = geolocator.geocode(city)
gtc = sum(height*location.latitude + width*location.longitude)
if gtc < mingtc:
mingtc = gtc
mincity = city
print(mincity, mingtc)
您可能可以使用 Pandas 功能做一些更好的事情,但不清楚您的数据框的实际格式是什么,或者 location.latitude、location.longitude、高度和宽度是什么样的(它们是浮点数、数组还是其他东西?)。这使得很难展示更复杂的方法。
上述解决方案适用于您当前在问题中出现的代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句