我试图从下面的循环中找到一种打印最小值的方法。输出既不是列表也不是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']))
但是这些都不能解决问题。感谢您的帮助
答案 0 :(得分:0)
以下是一种非复杂的解决方案:
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,height和width(它们是浮点数,数组还是其他东西? )。这使得很难显示出更复杂的方法。
上述解决方案适用于您当前在问题中出现的代码。