Python数据帧计算两列中出现的次数

时间:2015-06-23 12:47:20

标签: python python-3.x pandas dataframe

两个数据框列:

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数据帧实现!

1 个答案:

答案 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