Pandas循环使用groupby生成多独立DataFrame或合并全量DataFrame的方法
解决方案
方案1:生成合并的全量Top5航线DataFrame(推荐,实现最简单、性能最优)
先一次性完成全量统计,再按出发机场分组取前5,输出的合并结果和你打印的内容完全一致:
import pandas as pd ap = ['DMK','BKK','HKT','USM'] # 第一步:一次性统计所有目标出发机场的航线数量,避免循环内重复计算 full_stats = c[c['schedule_from'].isin(ap)]\ .groupby(['schedule_from','schedule_to'])\ .size()\ .reset_index(name='flight_count') # 把原来的列名0改为语义更明确的航班数量 # 按出发机场正序、航班数量倒序排序 full_stats = full_stats.sort_values(['schedule_from','flight_count'], ascending=[True, False]) # 每个出发机场取前5条,得到合并后的全量DataFrame merged_top5 = full_stats.groupby('schedule_from').head(5).reset_index(drop=True)
你可以直接输出merged_top5查看完整结果。
方案2:生成每个出发机场的独立DataFrame
在方案1的基础上,把每个机场的结果存入字典即可,调用时直接用机场代码取对应DataFrame:
# 接方案1的代码,生成独立DataFrame字典 ap_df_dict = {} for code in ap: ap_df_dict[code] = merged_top5[merged_top5['schedule_from'] == code].reset_index(drop=True) # 调用示例:取DMK的结果直接用 ap_df_dict['DMK'],需要单独存为变量可以直接赋值 df_DMK = ap_df_dict['DMK'] df_BKK = ap_df_dict['BKK'] df_HKT = ap_df_dict['HKT'] df_USM = ap_df_dict['USM']
内容的提问来源于stack exchange,提问作者user16286965
相关产品推荐
相关产品推荐

