【发布时间】:2019-09-06 07:48:33
【问题描述】:
我有一个在 Python 中使用 Pandas 的数据框,其中每行包含纬度和经度坐标。我的目标是添加另一个名为“close_by”的列,其中包含数据集中 1 英里内的其他条目的数量,使用 hasrsine。
我看过其他类似问题的指南,例如:https://engineering.upside.com/a-beginners-guide-to-optimizing-pandas-code-for-speed-c09ef2c6a4d6 但它们涉及使用 df.apply() 更新每一行以添加坐标和一些静态每个定义点之间的距离。我没有任何运气找到或想出解决方案。
基本上,这就是我要优化的内容:
for index1, row1 in business_data.iterrows():
for index2, row2 in business_data.iterrows():
distance = mpu.haversine_distance((business_data.at[index1,'latitude'], business_data.at[index1,'longitude']), (business_data.at[index2,'latitude'], business_data.at[index2,'longitude']))
distance = distance * 0.621371
if distance <= 1:
business_data.at[index1,'close_by'] = row1["close_by"] + 1
我有大约 50,000 行,在我的计算机上每行大约需要 5 秒。
感谢您的任何建议!
【问题讨论】:
-
你能发布一些示例数据吗?
标签: python-3.x pandas numpy lambda