如何高效计算国家DataFrame中各国家温度极差的最大值?
更高效的实现方法
你的思路是可行的,但两次单独调用groupby会重复处理数据,对于大型数据集来说效率偏低。以下是两种更优的实现方式,只需要一次分组操作就能完成计算:
方法1:使用agg一次性计算最大最小值
通过agg方法在一次分组中同时获取每个国家的温度最大值和最小值,再计算差值并取全局最大值:
# 分组后同时统计max和min,计算差值后取最大 temp_stats = df.groupby('country_code')['temperature'].agg(['max', 'min']) max_temp_change = (temp_stats['max'] - temp_stats['min']).max()
方法2:直接计算分组内的温度范围
利用apply直接在每个分组中计算温度的极差(max - min),再取所有极差中的最大值:
# 分组后直接计算每个组的温度极差,再取全局最大 max_temp_change = df.groupby('country_code')['temperature'].apply(lambda x: x.max() - x.min()).max()
效率对比
agg方法的性能更优,因为它基于pandas的向量化操作实现,避免了Python层面的循环;apply方法虽然代码更简洁,但本质是逐组执行Python函数,在数据量较大时速度会慢于agg。
内容的提问来源于stack exchange,提问作者Mampfi
相关产品推荐
相关产品推荐

