两个数据框列:
data['IP'] data['domain']
10.20.30.40 example.org
10.20.30.40 example.org
10.20.30.40 example.org
10.20.30.40 example.org
1.2.3.4 google.com
1.2.3.4 google.com
1.2.3.4 google.com
200.100.200.100 yahoo.com
200.100.200.100 yahoo.com
9.8.7.6 random.com
我想找到一种有效的方法来计算每个域映射到同一IP地址的次数。 然后,如果出现的次数超过两次(2),则取特定域(但仅限唯一值)并将它们移动到另一个数据帧或列。
所以输出可能是这样的:
[Occurences] [To be processed]
4 example.org
4 google.com
4
4
3
3
3
我尝试了不同的东西,比如Graphs,然后考虑节点的程度,以及数据透视表来表示数字,但我希望有一种有效的方法可以让我继续处理域< / em>在 if occurrence&gt; 2 语句之后。
所有这些都应该用python panda数据帧实现!
答案 0 :(得分:3)
以下内容在“域”上执行groupby
,然后在“IP”地址上调用value_counts
,然后我们对此进行过滤并重置索引并重命名列以使其更有意义:
In [58]:
gp = df.groupby('domain')['IP'].value_counts()
df1 = gp[gp > 2].reset_index()
df1.rename(columns={'level_1': 'IP', 0:'Occurences'}, inplace=True)
df1
Out[58]:
domain IP Occurences
0 example.org 10.20.30.40 4
1 google.com 1.2.3.4 3