如何按经纬度分组计算PM均值并保留坐标信息?
按经纬度分组计算PM均值的实现方法
你可以通过 pandas 的 groupby 方法,按**纬度(latitude)和经度(longitude)**组合分组,再对每组的 PM 列计算均值,最后重置索引保留坐标列即可。
具体代码实现
针对你的示例数据,执行以下代码:
import pandas as pd # 示例数据 df = pd.DataFrame({ 'date': ['01-01-2015 00:00:00', '01-01-2015 03:00:00', '02-01-2015 00:00:00', '02-01-2015 03:00:00', '10-01-2015 00:00:00'], 'latitude': [-55.0, -55.0, -52.0, -52.0, -43.0], 'longitude': [-18.5, -18.5, -21.5, -21.5, -26.0], 'PM': [10, 20, 20, 30, 35] }) # 按经纬度分组计算PM均值 result_df = df.groupby(['latitude', 'longitude'])['PM'].mean().reset_index() print(result_df)
代码说明
groupby(['latitude', 'longitude']):将数据按唯一的经纬度坐标对分组,确保同一坐标下的所有时间序列数据被归为一组['PM'].mean():仅对分组后的 PM 列计算均值,避免其他列被干扰reset_index():将分组时作为索引的经纬度转换为普通列,最终得到包含坐标和对应 PM 均值的结构化 DataFrame
运行结果
执行后会输出符合预期的结果:
latitude longitude PM 0 -55.0 -18.5 15.0 1 -52.0 -21.5 25.0 2 -43.0 -26.0 35.0
扩展(可选)
如果需要同时计算多个统计量(比如计数、标准差),可以使用 agg 方法:
result_df = df.groupby(['latitude', 'longitude']).agg( PM_mean=('PM', 'mean'), PM_count=('PM', 'count'), PM_std=('PM', 'std') ).reset_index()
内容的提问来源于stack exchange,提问作者Daniel M M
相关产品推荐
相关产品推荐

