python - 在相邻列中查找对值的有效方法(Python/R/Sql)
问题描述
我在 pandas 中有一个数据框(下面的df),有几百万行 * 20 列。
并给定一对值,我试图找出它们是否存在于df的相邻列中。
例如 df看起来像
给定值对(a3, b2),我们发现它们存在于相邻列中(不必在同一行中)。
对于值对(b2, a3),我们认为它们不满足条件(列的移动应该向右)。
这可以通过对小数据集使用循环来完成,但我有数百万条记录,有 20 列和很多对要检查。有没有办法有效地计算这个?谢谢!
解决方案
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
推荐阅读
- node.js - 在 Jenkins Pipeline with Docker 的后期构建操作中似乎无法触发“失败”事件
- git - 有没有办法将我当前的开发分支合并到一个暂存分支作为一个步骤?
- r - r 如何使用自由比例更改多面图中的顺序 x 轴标签以及如何添加辅助轴
- java - Spring Boot - 根据要求四舍五入的双 PathVariable
- javascript - React 惰性代码拆分包括来自根包中已卸载组件的依赖项
- linux - 如何将共享库安装到嵌入式 Linux
- python - 需要在 Pyspark 数据框中按组聚合并放入列表
- snmp - 如何使用 PySNMP 为 HrSystemDate MIB 对象设置 DateAndTime
- java - 如何使用作业调度程序将作业项排入队列
- python - def() 函数螺丝与我的缩进