从循环创建一个numpy数组

时间:2018-09-26 09:25:23

标签: python numpy geocoding

我试图从下面的循环中找到一种打印最小值的方法。输出既不是列表也不是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']))

但是这些都不能解决问题。感谢您的帮助

enter image description here

1 个答案:

答案 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(它们是浮点数,数组还是其他东西? )。这使得很难显示出更复杂的方法。

上述解决方案适用于您当前在问题中出现的代码。