我可以使用一些帮助。
主要问题是用它们的纬度和经度计算两点之间的距离。我们将巴西划分为 33k 个六边形,列在下面的数据框中:
我一直在尝试将此数据框与其副本合并,因此我将拥有一个包含这些六边形的所有组合的 10 亿行数据框,并使用此函数计算它们之间的距离:
def get_distance(lat_1, lng_1, lat_2, lng_2):
d_lat = lat_2 - lat_1
d_lng = lng_2 - lng_1
temp = (
np.sin(d_lat / 2) ** 2
+ np.cos(lat_1)
* np.cos(lat_2)
* np.sin(d_lng / 2) ** 2
)
#print('a')
return 6373.0 * (2 * np.arctan2(np.sqrt(temp), np.sqrt(1 - temp))) * 1.4 * 1000
我尝试将它们与 Pandas 合并,但出现内存错误(需要 8GB),所以我使用 Vaex 库将数据转换为 hdf5 文件。但是,当我尝试将这些与此代码合并时,我得到了同样的错误。
with h5py.File('mergedfs', 'w') as hdf:
hdf.create_dataset('datasetmerge', data = dvv.join(dvv2, left_on='key', right_on='key2', how='left', allow_duplication=True))
有没有人经历过这样的事情?我提前感谢您的帮助。
另外,如果您有任何替代解决方案,我很高兴听到!