假设有如下数据框df,其中location列为位置信息,group列为组信息。
import pandas as pd
from geopy.distance import geodesic
df = pd.DataFrame({'location': [(40.7128, -74.0060), (41.8781, -87.6298), (51.5074, -0.1278), (52.5200, 13.4050), (35.6895, 139.6917), (37.7749, -122.4194)],
'group': [1, 1, 2, 2, 3, 3]})
我们可以使用apply函数来对每个组进行计算,并将结果存放到新列中。
def dist_to_first(locations):
first_loc = locations[0]
return [geodesic(first_loc, loc).km for loc in locations]
df['dist_to_first'] = df.groupby('group')['location'].apply(dist_to_first)
这将调用dist_to_first函数,该函数计算每个位置到第一个位置的距离,并返回一个包含每个位置距离的列表。apply函数将对每个组调用该函数,并将结果存储在dist_to_first列中。
上一篇:按组计算SQL平均百分比
下一篇:按组计算特定值的两行之间的案例数