我有两个数据帧(df1,df2),我想遍历这两个数据框,并匹配这两个数字框中的键值。如果匹配,我想执行特定的操作。
df1:
ID Name lat/long
1 xyz (23,12)
df2:
ID Store lat/long
1 pharmacy (23,13)
我想迭代两个df,找到ID相同的两个坐标之间的距离。
示例如果df1[‘id’]==df2[‘id‘]:查找两个纬度/经度之间的距离
您在这个问题上没有提供太多信息,所以这可能是关闭的。
假设:
df1 =
ID Name lat/long
0 1 A (23, 12)
1 2 B (24, 12)
2 3 C (25, 12)
3 10 D (30, 12)
df2 =
ID Store lat/long
0 1 a (23, 13)
1 2 b (24, 13)
2 3 c (25, 13)
3 11 e (30, 13)
并且:列lat/long
包含tuples
。如果不执行df1["lat/long"] = df1["lat/long"].map(eval)
,则对df2
执行相同操作。
然后这个
from haversine import haversine
df3 = pd.merge(df1, df2, on="ID", how="inner")
df3["Distance"] = df3[["lat/long_x", "lat/long_y"]].apply(
lambda row: haversine(*row),
axis="columns"
)
df3 = df3.drop(columns=["lat/long_x", "lat/long_y"])
导致
ID Name Store Distance
0 1 A a 102.355413
1 2 B b 101.581547
2 3 C c 100.776739