首页 > 解决方案 > 在相邻列中查找对值的有效方法(Python/R/Sql)

问题描述

我在 pandas 中有一个数据框(下面的df),有几百万行 * 20 列。

并给定一对值,我试图找出它们是否存在于df的相邻列中。

例如 df看起来像

在此处输入图像描述

给定值对(a3, b2),我们发现它们存在于相邻列中(不必在同一行中)。

对于值对(b2, a3),我们认为它们不满足条件(列的移动应该向右)。

这可以通过对小数据集使用循环来完成,但我有数百万条记录,有 20 列和很多对要检查。有没有办法有效地计算这个?谢谢!

标签: pythonralgorithmdata-structures

解决方案


df在 ThomasIsCoding 的帖子中使用,这是data.table在 R 中使用的选项:

library(data.table)
DT <- data.table(VAL=unlist(df), COL=rep(1L:ncol(df), each=nrow(df)), key="VAL")
isadj <- function(left, right) {
    DT[.(left), .(COL=COL+1L)][DT[.(right)], on=.(COL), nomatch=0L, .N > 0L]
}

isadj("a3", "b2")    
#[1] TRUE

isadj("b2", "a3")    
#[1] FALSE

推荐阅读