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

我想要使用 Pandas 来识别“计数”列上的重复行,但我想计算重复项上符号彼此相交的次数。

我的意思是,如果计数值使用两个不同的符号出现两次。这些符号被列为它们之间有一个交集,因为它们共享相同的计数值。

类似这样的事情:

Symbol Symbol Number of Intersections
A       B      2
B       A      2
C       A      3
.....

我确信有一种 Pythonic Pandas 的方式可以做到这一点。但它并没有浮现在脑海中。

最佳答案

让我们使用merge进行自合并,然后使用querygroupby:

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'}))

编辑:在 NaN 值的情况下使用 size() 更安全

(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

关于python - 使用 Pandas 计算重复项之间的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43660452/

相关文章:

python - Pandas :应用返回 list

python - 根据其他两个变量的值创建一个变量

python - 如何获得 1 :1 corresponding matches using sklearn KNearest neighbors

python - openerp中如何将数据存储到动态字段?

python - 在python中将数据写入文件时出错

python - 当 np.nan 设置为默认值时,为什么 np.select 返回 'nan' 作为字符串而不是 np.nan?

python - 使用列表作为 pandas 数据框中的值

python - 如何摆脱matplotlib中条形标签上的科学记数法?

Python [Errno 13] 打开某些图像时权限被拒绝

python - 如何计算 Pandas 中每一列的每日平均值?