Python 3.x 使用一个函数比较两个数据帧(无公共索引)

Python 3.x 使用一个函数比较两个数据帧(无公共索引),python-3.x,pandas,Python 3.x,Pandas,我有2个熊猫数据框,餐厅: Lat Long Name 0 43.599503 1.440678 Le Filochard 1 43.602369 1.447368 Le Wallace 2 43.603838 1.435186 Chez Tonton, Pastis Ô Maître 及酒店: Lat Long Name 0 43.60377

我有2个熊猫数据框,餐厅:

     Lat        Long             Name
0    43.599503  1.440678      Le Filochard
1    43.602369  1.447368      Le Wallace
2    43.603838  1.435186      Chez Tonton, Pastis Ô Maître
及酒店:

      Lat      Long             Name
0   43.603779  1.444004         Grand Hôtel de l'Opéra
1   43.599482  1.441207         Hôtel Garonne
2   43.549924  1.499821         Ibis Styles
1函数距离(起点,终点),起点=(横向,纵向)坐标

我试图将该函数应用于2个数据帧,以计算第一个数据帧的每一行距离小于0.2的第二个数据帧的项数

我正在尝试应用映射功能,但无法使用2个数据帧执行它;我需要合并它们吗?

这对您有用吗? 只需要校正距离的函数

hotels=pd.DataFrame([[43.599503, 1.440678, 'Le Filochard'],
                     [43.602369, 1.447368, 'Le Wallace'],
                     [43.603838, 1.435186, 'Chez Tonton, Pastis Ô Maître']],
                   columns=['Lat', 'Long', 'Name'])
restaurants=pd.DataFrame([[43.603779, 1.444004, "Grand Hôtel de l'Opéra"],
                          [43.599482, 1.441207, 'Hôtel Garonne'],
                          [43.549924, 1.499821, 'Ibis Styles']],
                         columns=['Lat', 'Long', 'Name'])
hotels['Nearby Resaurants'] = hotels.apply(lambda h: list(restaurants[((restaurants.Lat-h.Lat)**2+(restaurants.Long-h.Long)**2)<0.005].Name), axis=1)
print(hotels)
            Lat      Long                          Name  \
0  43.599503  1.440678                  Le Filochard   
1  43.602369  1.447368                    Le Wallace   
2  43.603838  1.435186  Chez Tonton, Pastis Ô Maître   

                         Nearby Resaurants  
0  [Grand Hôtel de l'Opéra, Hôtel Garonne]  
1  [Grand Hôtel de l'Opéra, Hôtel Garonne]  
2  [Grand Hôtel de l'Opéra, Hôtel Garonne]
hotels=pd.DataFrame([43.599503,1.440678,'Le Filochard'],
[43.602369,1.447368,“勒华莱士”],
[43.603838,1.435186,'Chez Tonton,PastisÔMaître'],
列=['Lat','Long','Name'])
餐厅=pd.数据框([[43.603779,1.444004,“洛佩拉大酒店”],
[43.599482,1.441207,'Hôtel Garonne'],
[43.549924,1.499821,‘宜必思风格’],
列=['Lat','Long','Name'])

hotels['neared resarants']=hotels.apply(lambda h:list(restaurants[((restaurants.Lat-h.Lat)**2+(restaurants.Long-h.Long)**2)你能展示你的代码吗?也许你可以在这里找到灵感:谢谢Sergey,它直接使用公式工作得很好。但是我不能用我的函数距离((xlat,xlong),(yla,ylong)执行相同的操作:我正在尝试这个:
code
df_hotel['neared Resto']=df_hotel.apply(lambda h:list)(df_Resto[(distance((df_Resto.Lat,h.Lat),(df_Resto.Long,h.Long))工作了!!我的头痛正在慢慢减轻。非常感谢。
def distance(X,Y):
    return((X[0]-X[1])**2+(Y[0]-Y[1])**2)

hotels['Nearby Resaurants'] = hotels.apply(lambda h: list(restaurants.loc[restaurants.apply(lambda r: distance((r.Lat,h.Lat),(r.Long,h.Long))<0.005, axis=1)].Name), axis=1)
print(hotels)