You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas实现按host分组并生成含URL Count的目标表格

按IP分组统计URL数量并生成指定格式表格

需求说明

需要生成包含host、url、URL Count三个表头的表格,将每个IP地址关联的URL分组展示,URL Count列为对应IP的总URL数量。

原始代码(不符合预期)

import pandas as pd
import numpy as np
data = {'host': ['1.1.1.1', '192.168.1.1', '192.168.1.1', '192.168.1.1', '172.16.1.2', '192.168.1.1', '172.16.1.2', '10.2.3.4', '10.0.0.1', '10.0.0.1'],
        'url': ['capps.test.com', 'attilab-admin.test.com', 'emea-solutions-admin.test.com', 'ilab-admin.test.com', 'learning.test.com', 'mktextfw.test.com', 'sandbox.learning.test.com', 'mynetwork.test.com', 'www.letsdoit.com', 'www.mysite.com']}
df = pd.DataFrame(data)
df['URL Count'] = df.groupby('host')['url'].transform('count')
df.pivot(index='host', columns='url')
df2 = df.set_index(['host', 'url'])
df.groupby(['host', 'url']).size()
stacked = pd.DataFrame(df2.stack())
print(stacked)

解决方案

无需复杂的pivot或stack操作,只需统计每个IP的URL总数并合并回原表即可实现需求:

正确代码

import pandas as pd

data = {'host': ['1.1.1.1', '192.168.1.1', '192.168.1.1', '192.168.1.1', '172.16.1.2', '192.168.1.1', '172.16.1.2', '10.2.3.4', '10.0.0.1', '10.0.0.1'],
        'url': ['capps.test.com', 'attilab-admin.test.com', 'emea-solutions-admin.test.com', 'ilab-admin.test.com', 'learning.test.com', 'mktextfw.test.com', 'sandbox.learning.test.com', 'mynetwork.test.com', 'www.letsdoit.com', 'www.mysite.com']}
df = pd.DataFrame(data)

# 统计每个host的URL总数,转为带列名的DataFrame
url_counts = df.groupby('host')['url'].count().reset_index(name='URL Count')
# 将统计结果与原表合并,保留所有行
result_df = pd.merge(df, url_counts, on='host')
# 按host排序并重置索引,输出更规整
result_df = result_df.sort_values('host').reset_index(drop=True)

print(result_df)

代码说明

  1. 统计URL总数:通过groupby('host')['url'].count()计算每个IP对应的URL总数量,用reset_index(name='URL Count')将结果转为结构化DataFrame,指定列名为URL Count。
  2. 合并数据:使用pd.merge将统计结果与原DataFrame按host列关联,确保每一行都带上对应IP的总URL数。
  3. 规整输出:按host排序并重置索引,让输出表格的IP分组更清晰。

最终输出

hosturlURL Count
1.1.1.1capps.test.com1
10.0.0.1www.letsdoit.com2
10.0.0.1www.mysite.com2
10.2.3.4mynetwork.test.com1
172.16.1.2learning.test.com2
172.16.1.2sandbox.learning.test.com2
192.168.1.1attilab-admin.test.com4
192.168.1.1emea-solutions-admin.test.com4
192.168.1.1ilab-admin.test.com4
192.168.1.1mktextfw.test.com4

内容的提问来源于stack exchange,提问作者timlaw71

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 03:40:34