Python 使用熊猫计数重复项之间的交点
我有一个如下所示的数据帧:Python 使用熊猫计数重复项之间的交点,python,pandas,Python,Pandas,我有一个如下所示的数据帧: Symbols Count A 3 A 1 A 2 A 4 B 1 B 3 B 9 C 2 C 1 C 3 Symbol Symbol Number of Intersections A B 2 B A 2 C A 3 ..... 我想使用Pandas来识别“Count”列上的重复
Symbols Count
A 3
A 1
A 2
A 4
B 1
B 3
B 9
C 2
C 1
C 3
Symbol Symbol Number of Intersections
A B 2
B A 2
C A 3
.....
我想使用Pandas来识别“Count”列上的重复行,但我想计算符号在重复行上彼此相交的次数
我的意思是,如果一个计数值用两个不同的符号出现两次。由于符号共享相同的计数值,因此它们之间会列出一个交点
大概是这样的:
Symbols Count
A 3
A 1
A 2
A 4
B 1
B 3
B 9
C 2
C 1
C 3
Symbol Symbol Number of Intersections
A B 2
B A 2
C A 3
.....
我相信有一种类似蟒蛇的方式可以做到这一点。但是我想不起来了。让我们使用
merge
进行自合并,然后query
,以及groupby
:
df_selfmerge = df.merge(df, on='Count', how="inner").query('Symbols_x != Symbols_y')
(df_selfmerge.groupby(['Symbols_x','Symbols_y'])['Count']
.count()
.reset_index()
.rename(columns={'Symbols_x':'Symbol',
'Symbols_y':'Symbol',
'Count':'Number of Intersections'}))
编辑:使用size()更安全,仅在NaN值为
(df_selfmerge.groupby(['Symbols_x','Symbols_y'])['Count']
.size()
.reset_index()
.rename(columns={'Symbols_x':'Symbol',
'Symbols_y':'Symbol',
0:'Number of Intersections'}))
输出:
Symbol Symbol Number of Intersections
0 A B 2
1 A C 3
2 B A 2
3 B C 2
4 C A 3
5 C B 2
谢谢,这是我需要的。我的第二个问题是,如果“Count”列将改为字符串列,那么该怎么办,因为我很快也会遇到这个问题。i、 e.字符串中的相似性,而不是整数字符。欢迎使用。完全相同的字符串不是问题。当你说字符串中的相似性时,我觉得这就像是模糊逻辑。您可能需要提交一个新的问题来收集数据。感谢您的投票并接受!不客气,我当然是指一模一样的字符串。