gpt4 book ai didi

python - 根据组的频率计数添加新列

转载 作者:行者123 更新时间:2023-11-30 22:30:26 25 4
gpt4 key购买 nike

如果我的标题不太具有描述性,我深表歉意。但这就是我想要实现的目标:-

我有一个包含 2 个字段的数据帧,即 TCP 流量的源端口和目标端口。数据帧的 csv 转储看起来像这样:-

srcp    dstp
55647 22
22 55670
2222 56354
55670 22
55670 22
2222 56354
56362 139
22 55670
22 55670
56354 2222
22 55670
56354 2222

第 1 列是源端口,第 2 列是目标端口。

我想查看源端口-目标端口对并获取它们的频率并将其存储在新的列频率中。换句话说,对于上面的例子,我想这样做:-

  55647 22    1
22 55670 6
2222 56354 4
55670 22 6
55670 22 6
2222 56354 4
56362 139 1
22 55670 6
22 55670 6
56354 2222 4
22 55670 6
56354 2222 4

正如您所看到的,端口 2222-5634 的频率为 4(因为流量可以在任一方向流动,因此需要将它们识别为一个连接),因此值 4 在对应于的频率列单元格中重复目标/源端口中的值 2222-56354。

由于仍在 python 中攀登阶梯,我想知道如何实现这一目标。

最佳答案

首先按 numpy.sort 对每行的所有值进行排序然后groupbytransform功能size :

注意:sizecount 之间的差异是 count 而不是 NaN 值。

df['a'] = pd.DataFrame(np.sort(df.values, 1)).groupby([0,1])[0].transform('size')
print (df)
srcp dstp a
0 55647 22 1
1 22 55670 6
2 2222 56354 4
3 55670 22 6
4 55670 22 6
5 2222 56354 4
6 56362 139 1
7 22 55670 6
8 22 55670 6
9 56354 2222 4
10 22 55670 6
11 56354 2222 4

类似:

df['a'] =  pd.DataFrame(np.sort(df.values, 1))
.groupby(list(range(len(df.columns))))[0]
.transform('size')
print (df)

srcp dstp a
0 55647 22 1
1 22 55670 6
2 2222 56354 4
3 55670 22 6
4 55670 22 6
5 2222 56354 4
6 56362 139 1
7 22 55670 6
8 22 55670 6
9 56354 2222 4
10 22 55670 6
11 56354 2222 4

关于python - 根据组的频率计数添加新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46049436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com