如何在Python的DataFrame中计算不同动物的经纬度中位数
为每个动物计算经纬度中位数并新增列到原DataFrame
直接使用Pandas的groupby结合transform方法就能实现需求,transform会将分组计算的中位数结果广播到原DataFrame的对应行,无需额外合并操作。
步骤示例
- 模拟输入数据(对应你的原始DataFrame)
import pandas as pd df = pd.DataFrame({ 'N° Tag': ['A1', 'A1', 'A2', 'A2', 'A2', 'A3'], 'Lat': [40.1, 40.3, 39.5, 39.7, 39.6, 41.2], 'Lon': [-100.2, -100.4, -99.8, -99.9, -99.7, -101.1] })
- 计算并新增中位数列
# 按个体标识分组,计算纬度中位数并新增列 df['Median Lat'] = df.groupby('N° Tag')['Lat'].transform('median') # 同理计算经度中位数 df['Median Lon'] = df.groupby('N° Tag')['Lon'].transform('median')
输出结果
N° Tag Lat Lon Median Lat Median Lon 0 A1 40.1 -100.2 40.2 -100.3 1 A1 40.3 -100.4 40.2 -100.3 2 A2 39.5 -99.8 39.6 -99.8 3 A2 39.7 -99.9 39.6 -99.8 4 A2 39.6 -99.7 39.6 -99.8 5 A3 41.2 -101.1 41.2 -101.1
说明
groupby('N° Tag')按个体标识对数据分组transform('median')计算每组的中位数,并将结果映射回原DataFrame的每一行,保证行数与原数据一致- 默认会自动跳过空值,若需强制包含空值可指定
skipna=False
内容的提问来源于stack exchange,提问作者toms
相关产品推荐
相关产品推荐

