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.字符串中的相似性,而不是整数字符。欢迎使用。完全相同的字符串不是问题。当你说字符串中的相似性时,我觉得这就像是模糊逻辑。您可能需要提交一个新的问题来收集数据。感谢您的投票并接受!不客气,我当然是指一模一样的字符串。