为什么此python函数返回重复列表?

如何解决为什么此python函数返回重复列表?

我正在尝试编写一个代码块,该代码块作用于两组地理坐标(在这种情况下为邻里和暴力犯罪)。它计算每个街区500m半径内的犯罪数量,将这些数字添加到列表中,然后将该列表与街区数据集合并。

#For each neighbourhood in city find all crimes committed within a 500m radius

from geopy import distance

def Crime_in_Hood(crimes):
#counts number of crimes in 500m radius of neighbourhood
   crime_count = 0
   
   for index,crime in crimes.iterrows():
       test_point = [{crime['Latitude'],crime['Longitude']}]
       radius = 0.5# in km

       center_point_tuple = tuple(center_point)
       test_point_tuple = tuple(test_point)

       dis = distance.distance(center_point_tuple,test_point_tuple).km

       if dis <= radius:
           crime_count = crime_count + 1
           
   return crime_count


def Crime_in_City(crimes,hoods):
#returns number of crimes for each neighbourhood in city
   
#instantiate crime tally
   violent_crimes = []
   
   for index,hood in hoods.iterrows():
       center_point = [{hood['Latitude'],hood['Longitude']}]
       crime_count = Crime_in_Hood(crimes,hoods)
       violent_crimes.append(crime_count)
       
   return violent_crimes

       
def Crime_Counter(crimes,hoods):

#Add the number of crimes committed to dataframe for each neighbourhood in city
   violent_crimes = Crime_in_City(crimes,hoods)

   #Add violent_crimes to hoods
   hoods["Violent Crimes"] = violent_crimes
   return hoods 


ny_hoods = Crime_Counter(ny_c,ny_hoods)
ny_hoods.head()  

问题是它返回一个数据框,其中“暴力犯罪”列中的每个值都相同。

我用不同的值测试了Crime_in_Hood函数,它可以按预期工作。但是,Crime_in_City返回一个列表,该列表的最后一个Crime_count值会一遍又一遍地重复。所以现在我的问题就在这里,而不是如何解决。据我所知,Crime_in_Hood应该为Crime_in_City的每次迭代返回不同的值,并将其附加到violent_crimes,但这不是。

有什么想法吗?

解决方法

Crime_in_Hood(crimes)仅具有一个已定义的参数,但是您在此处使用2个参数来调用它:Crime_count = Crime_in_Hood(crimes,敞篷)。这就是您的代码的外观(如下)。 ny_c和ny_hoods都应该是带有float64值的“纬度”和“经度”列的pandas DataFrame。除此之外,我不确定在以下方面有关geopy的工作方式:{Latitude,Longitude}表示法。

#For each neighbourhood in city find all crimes committed within a 500m radius

from geopy import distance

def Crime_in_Hood(crimes,center_point):
#counts number of crimes in 500m radius of neighbourhood
   crime_count = 0
   
   for index,crime in crimes.iterrows():
       test_point = [{crime['Latitude'],crime['Longitude']}]
       radius = 0.5# in km

       center_point_tuple = tuple(center_point)
       test_point_tuple = tuple(test_point)

       dis = distance.distance(center_point_tuple,test_point_tuple).km

       if dis <= radius:
           crime_count = crime_count + 1
           
   return crime_count


def Crime_in_City(crimes,hoods):
#returns number of crimes for each neighbourhood in city
   
#instantiate crime tally
   violent_crimes = []
   
   for index,hood in hoods.iterrows():
       center_point = [{hood['Latitude'],hood['Longitude']}]
       crime_count = Crime_in_Hood(crimes,center_point)
       violent_crimes.append(crime_count)
       
   return violent_crimes


def Crime_Counter(crimes,hoods):

#Add the number of crimes committed to dataframe for each neighbourhood in city
   violent_crimes = Crime_in_City(crimes,hoods)

   #Add violent_crimes to hoods
   hoods["Violent Crimes"] = violent_crimes
   return hoods 


ny_hoods = Crime_Counter(ny_c,ny_hoods)
ny_hoods.head()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?