在Pandas DataFrame中统计不同IP的实例总数
解决方法:按IP分组求和并输出指定格式
刚接触Pandas不用慌,这个需求其实很容易实现,核心就是用分组求和的方法,我一步步给你讲:
步骤1:按IP分组并计算实例总数
首先我们用groupby()方法把数据按IP列分组,然后对每个分组里的Instances列求和,代码如下:
import pandas as pd # 假设你的df已经创建好了,直接执行下面的代码 sum_result = df.groupby('IP')['Instances'].sum().reset_index()
groupby('IP'):把DataFrame里的数据按照不同的IP值分成若干组['Instances'].sum():对每个分组中的Instances列计算总和reset_index():把分组后作为索引的IP变回普通列,这样得到的是一个包含IP和Instances(总和)的新DataFrame
步骤2:按你想要的格式输出结果
现在我们可以遍历这个新的DataFrame,按照IP 总数的格式打印:
for _, row in sum_result.iterrows(): print(f"{row['IP']} {row['Instances']}")
运行后你会得到这样的输出:
172.16.1.98 4
172.16.2.239 117
172.16.3.39 4
如果你想把结果存成字典方便后续使用,也可以这样:
ip_total_dict = df.groupby('IP')['Instances'].sum().to_dict() # 打印字典内容 for ip, total in ip_total_dict.items(): print(f"{ip} {total}")
补充说明
如果你的数据里Name列有不同的值,想要按Name+IP组合分组求和,只需要把groupby的参数改成['Name', 'IP']就行,比如:
sum_result = df.groupby(['Name', 'IP'])['Instances'].sum().reset_index()
不过你的数据里Name都是amy,所以单独按IP分组就完全满足需求啦~
内容的提问来源于stack exchange,提问作者Lasit Pant
相关产品推荐
相关产品推荐

