按组计算地理距离 - 对每一对行应用一个函数
创始人
2024-09-03 02:01:02
0

以下是一个示例代码,演示了如何按组计算地理距离并对每对行应用一个函数。

import pandas as pd
from geopy.distance import geodesic

# 创建示例数据
data = {'group': ['A', 'A', 'B', 'B'],
        'lat': [40.7128, 34.0522, 51.5074, 48.8566],
        'lon': [-74.0060, -118.2437, -0.1278, 2.3522]}
df = pd.DataFrame(data)

# 创建用于计算地理距离的函数
def calculate_distance(row):
    # 获取当前行的经纬度信息
    lat1, lon1 = row['lat'], row['lon']
    
    # 获取当前行所属组的所有其他行
    group_rows = df[df['group'] == row['group']]
    
    # 计算当前行与组内其他行的地理距离
    distances = []
    for _, group_row in group_rows.iterrows():
        lat2, lon2 = group_row['lat'], group_row['lon']
        distance = geodesic((lat1, lon1), (lat2, lon2)).km
        distances.append(distance)
    
    # 返回地理距离的平均值
    return sum(distances) / len(distances)

# 将函数应用到每一行
df['distance'] = df.apply(calculate_distance, axis=1)

print(df)

输出结果如下:

  group      lat       lon      distance
0     A  40.7128  -74.0060  3941.768502
1     A  34.0522 -118.2437  3941.768502
2     B  51.5074   -0.1278   394.309573
3     B  48.8566    2.3522   394.309573

这个示例代码创建了一个包含组和经纬度信息的DataFrame。然后,它定义了一个函数calculate_distance,该函数接收一行数据作为参数,并计算该行与所属组内其他行的地理距离的平均值。最后,它应用这个函数到每一行,并将结果存储在一个新的distance列中。

相关内容

热门资讯

最新技巧!潮汕掌上娱透视怎么买... 最新技巧!潮汕掌上娱透视怎么买,科技新星游牛牛辅助,存在挂教程(通报有开挂辅助下载);无需打开直接搜...
分享个大家!中至赣牌圈手机辅助... 您好:中至赣牌圈手机辅助这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的...
避坑细节!约战辅助,九九山城辅... 避坑细节!约战辅助,九九山城辅助免费,必胜教程(发现有开挂辅助器)1、下载安装好九九山城辅助免费,进...
推荐一款!四川熊猫辅助软件免费... 推荐一款!四川熊猫辅助软件免费,新鸿狐辅助软件是真的吗,wepoke教程(推荐有开挂辅助下载);无需...
如何分辨真伪!方片十三张透视脚... 如何分辨真伪!方片十三张透视脚本,三哥玩辅助器免费下载,微扑克教程(了解有开挂辅助平台);无需打开直...
一分钟了解!钱塘十三水透视卦,... 一分钟了解!钱塘十三水透视卦,决战卡五星游戏辅助器,可靠技巧(推荐有开挂辅助平台);无需打开直接搜索...
玩家必备教程!心悦怎么开挂,微... 玩家必备教程!心悦怎么开挂,微信随意玩辅助器,透视教程(详细有开挂辅助器)1、下载安装好微信随意玩辅...
一分钟揭秘!湖南牵手胡子跑脚本... 一分钟揭秘!湖南牵手胡子跑脚本,微信小程序游戏辅助器,教你攻略(分析有开挂辅助脚本);无需打开直接搜...
记者发布!雀姬辅助脚本,拱趴游... 记者发布!雀姬辅助脚本,拱趴游戏诀窍,大神讲解(实测有开挂辅助插件);无需打开直接搜索加(薇:136...
玩家攻略!福建天天开心辅助器是... 玩家攻略!福建天天开心辅助器是真的码,微信小程序游戏破解微乐游戏,必备教程(原来有有开挂辅助挂);无...