如何解决用于按距离将聚合列表创建到预定义字典中的 Python 代码
希望有人能帮帮我。
我试图回收我的一些用于距离计算的旧代码,这些代码通常只会返回数值,并且对于样本和人口子集非常有效 - 但现在太大而无法管理。我试图找到一种方法将输出更改为列表而不是矩阵。
数据帧示例 (Market_latLong)。在此示例中,经纬度已转换为弧度:
TAX_ID | 纬度 | 长 | |
---|---|---|---|
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]
现在这就是我挣扎的地方。在这里,我成对调用下面的半正弦方法 (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,列表是距离他们 100 英里范围内的每个人:
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
解决方法
查看本课程,它将帮助您了解所需的技巧
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)))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。