Python代码按距离创建一个聚合列表到一个预定义的字典中

Posted

技术标签:

【中文标题】Python代码按距离创建一个聚合列表到一个预定义的字典中【英文标题】:Python code to create an aggregated list by distance into a predefined dictionary 【发布时间】:2021-06-30 16:10:29 【问题描述】:

希望有人能帮帮我。

我试图回收一些用于距离计算的旧代码,这些代码通常只返回数值,它对样本和人口子集非常有效 - 但现在太大而无法管理。我试图找到一种将输出更改为列表而不是矩阵的方法。

数据帧示例 (Market_latLong)。在这个示例中,latlong 被转换为弧度:

TAX_ID Lat Long
0 A1 0.592957 -2.063824
1 A2 0.651901 -2.128469
2 A3 0.629707 -2.008770
3 A4 0.827849 -2.125870
4 A5 0.794262 -2.141358

我使用半正弦来做数学魔术,通常会返回一个矩阵,其中包含每个点与另一个点的接近程度。

dist = DistanceMetric.get_metric('haversine')

但是当您进入 40k 行时 - 我实际上无法保存该数据帧以与任何人共享,因为矩阵最终为 40k x 40k。所以我想建立一个字典来获取唯一的 TAX ID 作为键。这样做的重点是与需要它作为 csv 的人分享。

client_dict = 

selected_rows = Market_latLong.get(['TAX_ID', 'Lat', 'Long']) #grabbing what is necessary - that's all in this upload but others have more columns 

for index, row in selected_rows.iterrows():
  T_ID = row['TAX_ID'] #ID is the key now 
  if T_ID in client_dict: 
    client_dict[T_ID].append(row) #append that data to that key 
  else: 
    client_dict[T_ID] = [row] 

现在这就是我苦苦挣扎的地方。在这里,我成对调用下面的 hasrsine 方法 (dist) 来制作该矩阵,并从该矩阵中创建一个与每个键相关联的列表,其中的 ID 位于该初始 ID 的 100 英里范围内:

output = []

for T_ID in client_dict.keys():
  client_df = pd.DataFrame(client_dict[T_ID]) #client dict with the key of all the IDs
  clients_matrix = pd.DataFrame(dist.pairwise(client_df[['Lat','Long']].to_numpy())*6373,  columns=client_df.TAX_ID.unique(), index=client_df.TAX_ID.unique()) #This is the matrix
  result = ??????????????????????????????
  output.append([T_ID, result])

pd.DataFrame(output)

因此,结果变量是我一直在努力修复的地方,因为我不断破坏事物并且没有让它按预期工作。我能得到一些帮助吗?感谢任何帮助!

输出结果的理想场景将是关键是 ID,列表是距离他们一百英里内的每个人:

A1:A2、A5、A6、A9

A2:A3、A4、A10、A14、A18、A19、A55、A66、A123、A321

A3:A15、A12

A4:A989、A113、A1414、A1462、A14556

【问题讨论】:

【参考方案1】:

查看本课程,它将帮助您了解所需的技巧

list1=[1,2,3,4]
list2=[]
for i in list1:
    list2.append(i*2)
def multiple(j):
    return j*2
print(list2)
print(list(map(multiple,list1)))

【讨论】:

你能把变量名改得更短吗? 我可以让你的例子更短

以上是关于Python代码按距离创建一个聚合列表到一个预定义的字典中的主要内容,如果未能解决你的问题,请参考以下文章

按距离地图排序位置 Android

最小汉明距离

sencha touch 按距离排序列表

Python对象创建具有3个聚合关系成员的组

python中的自定义pivot_ui聚合器?

在 hive 中注册 python 自定义 UDF