Pandas DataFrame按port_count排序失效问题求助
修正后的Pandas代码实现需求
首先确保你的Excel数据至少包含IP和Port两列,以下是能实现按开放端口数量降序排序、展示各IP对应端口列表的代码:
import pandas as pd # 1. 读取Excel文件,替换成你的实际文件路径 df = pd.read_excel('your_file.xlsx') # 2. 聚合每个IP的端口列表,并统计端口数量 aggregated_data = df.groupby('IP').agg( 开放端口列表=('Port', list), 端口数量=('Port', 'count') ).reset_index() # 3. 按端口数量降序排序 sorted_data = aggregated_data.sort_values(by='端口数量', ascending=False) # 4. 输出结果 print(sorted_data[['IP', '端口数量', '开放端口列表']])
常见问题排查
- 如果你之前的代码没做
groupby聚合就直接排序,那肯定得不到按IP端口数排序的结果——因为原始数据是每行一个IP+端口的结构,排序只会针对单条端口记录,而非IP的总端口数。 - 若聚合后没加
reset_index(),groupby后的结果会把IP设为索引,后续排序可能出现索引混乱的情况,加上reset_index()能把IP变回普通列,方便后续操作。 - 确认排序时指定的列名是聚合后的端口数字段(比如上面的
端口数量),别写错列名导致排序失效。
内容的提问来源于stack exchange,提问作者timlaw71
相关产品推荐
相关产品推荐

