对于两个数据框之间的循环

时间:2020-02-26 00:03:13

标签: pandas mapping geopandas geopy

我正在尝试计算另一个特定点半径15英里以内的所有点。这些点位于不同的数据框中,如果可能,我想将它们分开。 Dataframe A的行要多得多,因此我想进行某种嵌套的for循环,以使DF B的第1行遍历DF A的每一行。

我有这个公式,当我手动输入经度和纬度时有效,但是有没有办法调用数据框并在两个数据框之间迭代循环?

import numpy as np


def haversine(lat1, lon1, lat2, lon2, to_radians=True, earth_radius=6371):
    """
    slightly modified version: of http://stackoverflow.com/a/29546836/2901002

    Calculate the great circle distance between two points
    on the earth (specified in decimal degrees or in radians)

    All (lat, lon) coordinates must have numeric dtypes and be of equal length.

    Output is in kilometers, added last return calculation to get convert to miles

    Converted to boolean output to simplify column for DF

    """
    if to_radians:
        lat1, lon1, lat2, lon2 = np.radians([lat1, lon1, lat2, lon2])

    a = np.sin((lat2-lat1)/2.0)**2 + \
        np.cos(lat1) * np.cos(lat2) * np.sin((lon2-lon1)/2.0)**2

    miles_in_distance = (earth_radius * 2 * np.arcsin(np.sqrt(a))) / 1.609

    return miles_in_distance <= 15

是否可以调用make一个看起来像这样的函数?

import numpy as np


def haversine(a_lat, a_lon, earth_radius=6371):

    A_df[a_lat], A_df[a_lon] = 
                     np.radians([a_lat, a_lon])

    for x,y in range(len(B_df)):
        B_df[b_lat], B_df[b_lon] = np.radians([b_lat, b_lon])

    a = np.sin((b_lat-a_lat)/2.0)**2 + \
        np.cos(a_lat) * np.cos(b_lat) * np.sin((b_long-a_lon)/2.0)**2

    miles_in_distance = (earth_radius * 2 * np.arcsin(np.sqrt(a))) / 1.609

    return miles_in_distance <= 15

理想情况下,我想将此添加回A_df

0 个答案:

没有答案