如何获得 Pandas 中具有非唯一值的两个系列的交集和并集?
How to get the Intersection and Union of two Series in Pandas with non-unique values?
如果我有 2 个 Series 对象,像这样:[0,0,1] [1,0,0]
我将如何获得两者的交集和联合?
它们只包含布尔值,这意味着它们是非唯一值。
我有一个很大的布尔矩阵。我已经对其进行了 minhashed,现在我试图找到误报和漏报,我认为这意味着我必须获得每个原始对的 Jaccard 相似性。
既然你说它们是布尔值,请使用 numpy 的 logical_and
和 logical_or
,或者在系列中使用 &
和 |
,即
y1 = pd.Series([1,0,1,0])
y2 = pd.Series([1,0,0,1])
# Numpy approach
intersection = np.logical_and(y1.values, y2.values)
union = np.logical_or(y1.values, y2.values)
intersection.sum() / union.sum()
# 0.33333333333333331
# Pandas approach
sum(y1 & y2) / sum(y1 | y2)
# 0.33333333333333331
如果我有 2 个 Series 对象,像这样:[0,0,1] [1,0,0] 我将如何获得两者的交集和联合? 它们只包含布尔值,这意味着它们是非唯一值。
我有一个很大的布尔矩阵。我已经对其进行了 minhashed,现在我试图找到误报和漏报,我认为这意味着我必须获得每个原始对的 Jaccard 相似性。
既然你说它们是布尔值,请使用 numpy 的 logical_and
和 logical_or
,或者在系列中使用 &
和 |
,即
y1 = pd.Series([1,0,1,0])
y2 = pd.Series([1,0,0,1])
# Numpy approach
intersection = np.logical_and(y1.values, y2.values)
union = np.logical_or(y1.values, y2.values)
intersection.sum() / union.sum()
# 0.33333333333333331
# Pandas approach
sum(y1 & y2) / sum(y1 | y2)
# 0.33333333333333331