以下是一个示例代码,演示了如何按组计算地理距离并对每对行应用一个函数。
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
列中。
上一篇:按组计算的部分类和?”
下一篇:按组计算杜宾-沃森检验