Python 列之间的交点数

Python 列之间的交点数,python,pandas,Python,Pandas,我正在尝试查找列对之间的交点计数。 数据文件(tsb)和预期结果如下所示。 每列的行数不同,因此我希望忽略空白 数据(tsb) 结果 C1_C2 C1_C3 C1_C4 C2_C3 C2_C4 C3_C4 2 3 1 2 1 2 我通过将每列更改为列表并执行类似于C1_C2=len(set(C1)&set(C2))的操作来实现这一点,但列的大小超过100,我想找到更好的方法。将文件读入熊猫数据帧,您将获得与 df = pd.DataFrame({'C

我正在尝试查找列对之间的交点计数。
数据文件(tsb)和预期结果如下所示。
每列的行数不同,因此我希望忽略空白

数据(tsb)

结果

C1_C2 C1_C3 C1_C4 C2_C3 C2_C4 C3_C4
  2     3     1     2     1     2

我通过将每列更改为列表并执行类似于
C1_C2=len(set(C1)&set(C2))
的操作来实现这一点,但列的大小超过100,我想找到更好的方法。

将文件读入熊猫数据帧,您将获得与

df = pd.DataFrame({'C1':['A', 'C', 'F', 'G', 'H'], 'C2':['B', 'F', 'C', '', ''], 'C3':['A', 'B', 'C', 'H', ''], 'C4':['A', 'B', '', '', '']})
然后您可以定义一个函数:

def findInter(pair):
    return (pair[0]+ '_' + pair[1], len(set(list(df[pair[0]])) & set(list(df[pair[1]]))))
结果是:

map(findInter, itertools.combinations(df.columns, 2))

列大小为100应该不是问题,或者你的意思是有超过100列?我的意思是我在一个一个地比较列,所以我想知道一些方法来处理大量的列的整体组合,尽管列的大小很大,但效果很好,尽管对我来说完全理解有点困难。非常感谢你。
map(findInter, itertools.combinations(df.columns, 2))