首页 > 解决方案 > 如何找到一个组中有多少成员同时也是另一个组的成员?

问题描述

我正在尝试查找某个组中出现在其他组中的人数。例如,这里是 Pandas 数据框:

d = {'name': ['ash', 'psyduck', 'pikachu', 'charizard', 'ash', 'psyduck'], 'group': ['a', 'b', 'c', 'b', 'b', 'a']}

看起来像这样:

灰:一个

心理鸭:b

皮卡丘:c

喷火龙:b

灰分:b

心理鸭:一个

我正在尝试创建一个如下所示的交叉表:

   a   b    c
a  2   2    0
b  2   3    0
c  0   0    1

本质上,这个交叉表显示了组 x 的成员有多少也是组 x 的成员。例如,a 和 b 组中有 2 人,因此在这些列的交集处有 2

我使用了 Pandas 交叉表功能,但它没有给出我正在寻找的结果。

标签: python

解决方案


import pandas as pd

d = {'name': ['ash', 'psyduck', 'pikachu', 'charizard', 'ash', 'psyduck'], 'group': ['a', 'b', 'c', 'b', 'b', 'a']}

df = pd.DataFrame(d)
df = df.merge(df, on='name')
print(
  pd.crosstab(df.group_x, df.group_y)
)

输出:

group_y  a  b  c
group_x         
a        2  2  0
b        2  3  0
c        0  0  1

演示:https ://repl.it/@alexmojaki/TragicFrigidConditions


推荐阅读