Python 分组查找重复地址

Python group by find duplicate addresses

你好,我有一个数据框,其中有 Date、IP 地址Username 列。 我想按数据框分组,以便找到具有多个用户的 IP 地址。 我想要这样的东西: IP 地址 用户名 样本 1 用户 1 用户2 样本 2 用户 3 用户 4

我正在使用代码:

group=dict(df.groupby(by=['IP address','Date'])['Username'].count())
ips=list()
for k,v in group.items():
    if v>=2:
        ips.append(k)
ip_address=list()
for x  in ips:
    ip_address.append(x[0])
ip_address
ips=log_cumulative2[log_cumulative2['IP address'].isin(ip_address)]

当我将 df 导出到电子表格时,我也获得了 IPS,仅需一个 user.Any 帮助?

你可以做的是使用 agg 方法。在这种方法中,您可以传递一个字典,指示对每一列应该做什么。使用 agg 方法,您可以为每一列使用多种聚合方法:

result = df.groupby(['IP address','Date']).agg({
    'Username':['count',list],
    'ips':list })
# removing the unique ones
result = result[result['Username','count'] >=2]

这段代码创建了一个数据帧,其中包含每对唯一的 IP addressDate 的计数作为其索引。然后它有一个 Usernames 的列表。如果要删除重复的 Usernames,可以使用 set 函数。 它还有一个 ips.

的列表