如何计算列之间的重叠值

2024-04-19 06:04:47 发布

您现在位置:Python中文网/ 问答频道 /正文

请允许我问一个关于熊猫数据帧的问题。 例如,我有这样一个数据帧。你知道吗

df = pd.DataFrame({'Dog': ['aa','bb','cc','dd','aa','ff'], 'Cat':['dd','ee','dd','as','ae','ee'], 'Bird':['ff','cd','ee','def','ae','as']})
df

每列代表动物的信息。 我想知道动物之间有多少重叠。 例如,狗和猫共享“dd”,所以一个重叠。 狗和鸟共用“ff”,所以一个重叠。你知道吗

有些动物在自己的栏中有重复的。 例如,Dog有一个重复的“aa”。 所以我想先去除动物体内的重复,然后再分析动物体内重复的数量。你知道吗

如果你能告诉我你的想法,我将非常感激。你知道吗

p.S.预期输出类似于此面板。你知道吗

enter image description here

谢谢你。你知道吗


Tags: 数据dataframedfasddeecataa
1条回答
网友
1楼 · 发布于 2024-04-19 06:04:47

这里有一个方法。主要的挑战是获得动物和特征的交叉表。然后通过矩阵乘法得到共生矩阵。你知道吗

请注意,对角线上的数字反映了每种动物独特特征的数量,这与您的示例不同。你知道吗

# get rid of duplicates and align animal names with features
df2 = df.stack().reset_index(1).drop_duplicates()
# get a crosstabulation
df3 = pd.crosstab(df2.iloc[:, 1], df2.iloc[:, 0])
# coocurrence matrix is obtained with matrix multiplication
res = df3.T @ df3
# level_1  Bird  Cat  Dog
# level_1
# Bird        6    3    1
# Cat         3    4    1
# Dog         1    1    5

相关问题 更多 >