【发布时间】:2021-11-08 12:21:19
【问题描述】:
我有一个包含 1 或 0 值的数据集,用于识别样品 (S) 中是否存在给定的矿物质 (M)。示例如下,但数据集本身包含 160 个样本中的大约 100 种矿物。
import numpy as np
import pandas as pd
data = np.array([['S1', '1', '1', '0', '0'],
['S2', '0', '1', '0', '1'],
['S3', '1', '1', '1', '1'],
['S4', '0', '0', '0', '1']])
minerals = ['Sample', 'M1', 'M2', 'M3', 'M4']
df = pd.DataFrame(data, columns=minerals).set_index('Sample')
co_occurrence = pd.DataFrame(columns=minerals[1:], index=minerals[1:])
对于每对矿物,我需要确定它们在名为 co_occurrence 的单独数据框中同时出现的频率;也就是说,我需要比较 df 中的每一列对,确定这些列中两种矿物的存在位置 (1),将这些出现相加并在 co_occurrence 中输入匹配的总数。
在给出的示例中,M1:M2 对的共现值应为 2,因为它们在 df 中一起出现两次。
我该怎么做?
【问题讨论】:
-
下面是回答还是欺骗需要什么?预期输出如何?
标签: python-3.x pandas