Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使x(m)半径相对于python坐标?_Python_Python 3.x_Coordinates_Geopy - Fatal编程技术网

如何使x(m)半径相对于python坐标?

如何使x(m)半径相对于python坐标?,python,python-3.x,coordinates,geopy,Python,Python 3.x,Coordinates,Geopy,我有一个数据库,包含数据、消耗量和坐标,例如: 我需要写一个代码,让我能够从一个地方到另一个地方,找到小于100m半径内平均消耗量的消耗量。100m半径的计算不是一次,而是针对每对坐标 代码: Geopy.distance是一个已计算两个坐标之间距离的库 在上述代码中;假设média是100 m范围内的场地平均消耗量,也应因地而异 它给了我这个错误: TypeError:“float”对象不可编辑 所以你会得到一个浮点错误,因为你试图取一个数字的和。这可以通过删除媒体中的总和=。。。线如果希望此

我有一个数据库,包含数据、消耗量和坐标,例如:

我需要写一个代码,让我能够从一个地方到另一个地方,找到小于100m半径内平均消耗量的消耗量。100m半径的计算不是一次,而是针对每对坐标

代码:

Geopy.distance是一个已计算两个坐标之间距离的库

在上述代码中;假设média是100 m范围内的场地平均消耗量,也应因地而异

它给了我这个错误:

TypeError:“float”对象不可编辑


所以你会得到一个浮点错误,因为你试图取一个数字的和。这可以通过删除媒体中的总和=。。。线如果希望此行取整个数据帧的平均值,则需要更改此行以从数据帧而不仅仅是行中获取数据

R9 = []
R9_NaN = []

for index, row in df.iterrows():
    coord_1 = (row['X'], row['Y'])
    for index, row2 in df.iterrows():
        coord_2 = (row['X'], row['Y'])
        if coord_2 != coord_1:
            dist = geopy.distance.geodesic(coord_1, coord_2).km
            if dist <= 0.100:
#                média=((row['Consumo2018']/12)/(len(coord_2)+1)) #Change to this to remove sum
                média=((df['Consumo2018']/12)/(len(df['Consumo2018'])+1)) #Change to this to get actual mean
                if row['Consumo2018']/12 < 1.5*média:
                    R9_NaN.append(index)
                    R9.append(0)
                else:
                    R9.append(0)

print(R9)

首先请注意,如果要使用2个for循环,则需要更改index,row的名称,因为它们会覆盖自身。还有哪一行有错误?在有。。。média=sumrow['Consumo2018']/12/lencoord_2+1是将其更改为第2行或类似的内容。您应该尝试打印lencoord_2和第['Consumo2018']行,以查看哪一行给出了错误。对于…printlencoord_2。。。。2用于。。。printrow['Consumo2018']]。。。120我在使用row,为了求和所有这些值。。。在100米半径范围内,您可以通过使用appendrow['Consumo2018']保存所有数据,然后在循环后取平均值,或者,您可以使用row进行迭代,但除了跟踪已包含的元素数之外,还需要添加到值中,而不是覆盖它。这样,我使用的是整个数据的平均值,而不仅仅是半径为100m的消耗的平均值。您在代码中没有使用整个数据的平均值因为你在一行一行地循环。。。。行是单个行,而不是来自整个数据帧的数据列。
R9 = []
R9_NaN = []

for index, row in df.iterrows():
    coord_1 = (row['X'], row['Y'])
    for index, row2 in df.iterrows():
        coord_2 = (row['X'], row['Y'])
        if coord_2 != coord_1:
            dist = geopy.distance.geodesic(coord_1, coord_2).km
            if dist <= 0.100:
#                média=((row['Consumo2018']/12)/(len(coord_2)+1)) #Change to this to remove sum
                média=((df['Consumo2018']/12)/(len(df['Consumo2018'])+1)) #Change to this to get actual mean
                if row['Consumo2018']/12 < 1.5*média:
                    R9_NaN.append(index)
                    R9.append(0)
                else:
                    R9.append(0)

print(R9)