Pyspark 按另一个数据帧的列过滤数据帧

2023-12-05

不知道为什么我在这方面遇到困难,考虑到在 R 或 pandas 中相当容易做到,它看起来很简单。我想避免使用 pandas,因为我正在处理大量数据,而且我相信toPandas()将所有数据加载到 pyspark 中的驱动程序内存中。

我有 2 个数据框:df1 and df2。我要过滤df1(删除所有行)其中df1.userid = df2.userid AND df1.group = df2.group。我不确定是否应该使用filter(), join(), or sql例如:

df1:
+------+----------+--------------------+
|userid|   group  |      all_picks     |
+------+----------+--------------------+
|   348|         2|[225, 2235, 2225]   |
|   567|         1|[1110, 1150]        |
|   595|         1|[1150, 1150, 1150]  |
|   580|         2|[2240, 2225]        |
|   448|         1|[1130]              |
+------+----------+--------------------+

df2:
+------+----------+---------+
|userid|   group  |   pick  |
+------+----------+---------+
|   348|         2|     2270|
|   595|         1|     2125|
+------+----------+---------+

Result I want:
+------+----------+--------------------+
|userid|   group  |      all_picks     |
+------+----------+--------------------+
|   567|         1|[1110, 1150]        |
|   580|         2|[2240, 2225]        |
|   448|         1|[1130]              |
+------+----------+--------------------+

编辑: 我尝试过很多 join() 和 filter() 函数,我相信我得到的最接近的是:

cond = [df1.userid == df2.userid, df2.group == df2.group]
df1.join(df2, cond, 'left_outer').select(df1.userid, df1.group, df1.all_picks) # Result has 7 rows

我尝试了很多不同的连接类型,也尝试了不同的

cond values:
    cond = ((df1.userid == df2.userid) & (df2.group == df2.group)) # result has 7 rows
    cond = ((df1.userid != df2.userid) & (df2.group != df2.group)) # result has 2 rows

然而,连接似乎是添加额外的行,而不是删除。

我在用着python 2.7 and spark 2.1.0


左反连接是您正在寻找的:

df1.join(df2, ["userid", "group"], "leftanti")

但使用左外连接也可以完成同样的事情:

(df1
    .join(df2, ["userid", "group"], "leftouter")
    .where(df2["pick"].isNull())
    .drop(df2["pick"]))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pyspark 按另一个数据帧的列过滤数据帧 的相关文章

随机推荐

  • android 清单中的任何密度

    我在我的应用程序中遇到了一个惊人的问题 当我把anyDensity在清单中标记为 false 我的应用程序运行良好 但每当我将其设置为 true 时 我的应用程序就会变得模糊 我会在我的应用程序上创建一些位图 如果我这样做的话会有问题吗an
  • 以编程方式清除 IE 缓存与 InetCpl.cpl,ClearMyTracksByProcess

    我有一个托管网络浏览器控件的应用程序 它使用我的微软提供的代码示例 定期 清除缓存 http support microsoft com kb 262110 然而 我注意到 一段时间后 缓存会损坏或无法正常工作 应该超出缓存的请求 会被一遍
  • 如何获取用于调用 google api 的委托凭证对象?

    我正在尝试通过 API 获取 gsuite 警报 我已经按照他们的要求创建了一个服务帐户docs我已将该服务帐户分配给我的谷歌云功能 我不想使用环境变量或上传凭据以及源代码 但我想利用函数使用的默认服务帐户 from googleapicl
  • 修复跨线程异常

    我需要一些帮助来修复跨线程异常 我使用 Invoke 通常可以解决这个问题 但由于某种原因它不起作用 void paintTimer Elapsed object sender System Timers ElapsedEventArgs
  • 如何计算python中数组中的值与数组之和的比率? [复制]

    这个问题在这里已经有答案了 我有一个这样的数组 array 1 2 3 5 3 4 6 7 2 对于每个成员 我想计算它们与行总和的比率 因此 我在建议样本中的问题的结果是 result 1 1 2 3 2 1 2 3 3 1 2 3 5
  • iOS 逐帧视频向前/向后播放

    我想在 iOS 设备上以慢动作播放视频 我的视图包含一个视频 约 2 秒长 和一个滑块 用户可以移动滑块并逐帧 向前和向后 浏览电影 MPMoviePlayerController缺乏逐帧步进的能力 我读到MVAssetReader 但我不
  • 绑定 int64 (SQL_BIGINT) 作为查询参数会导致在 Oracle 10g ODBC 中执行期间出错

    我在 Oracle 10g 上使用 ODBC 3 0 插入表失败 我不知道为什么 数据库运行在Windows Server 2003上 客户端运行在Windows XP上 桌子 CREATE TABLE test testcol NUMBE
  • Flutter:预定的通知日期时间

    我正在寻找将 Flutter 的插件 date time picker 与本地通知集成 因此 当我选择日期时间时 我还会安排通知 这是我的代码 你能帮我吗 现在我没有任何错误 但代码不起作用 class test1 extends Stat
  • 如何规范工作目录中的行结尾

    我的 git 存储库中有以 LF 结尾的文件 不知何故 我的工作树中的一些文件被转换为 CRLF 有没有办法将我的工作树中的行结尾转换回 LF 请注意 我的目录中有一些文件 gitignore所以我不想简单地删除所有内容并再次检查 尽管如果
  • 在 mac 雪豹上启用 php [关闭]

    Closed 这个问题是无关 目前不接受答案 安装 Entropy PHP 5 3 03 pkg 我一直在尝试在我的 mac 上启用 php 但每次我将浏览器指向 test php 时 我得到的只是显示的源代码 我将 test php 放在
  • Bash 脚本 - Do-While 循环中的变量作用域

    我有一个 do while 循环 我在其中向自身添加一个变量 while read line do let variable variable someOtherVariable done return variable 当我回显 vari
  • 使用 C# .accdb 文件的 Microsoft Access 压缩和修复

    我需要使用 C 压缩并修复 accdb 最后一个 MS Access 版本 我尝试使用这个 var jroEngine new JRO JetEngineClass var old Provider Microsoft ACE OLEDB
  • 用 rpy 制作的图发送到 X11 突然关闭?

    我正在使用 RPy2 来绘制一些图 绘图显示 但 X11 窗口立即消失 我输入的内容如下CCFS是一个数据矩阵 import rpy2 robjects as robjects r robjects r pca r princomp CCF
  • 将 mongo ObjectId 转换为字符串并将其用于 URL 可以吗?

    document show id 4cf8ce8a8aad6957ff00005b 一般来说 我认为您应该谨慎向客户端公开内部结构 例如数据库 ID URL 很容易被操纵 并且用户可能访问您不希望他访问的对象 特别是对于 MongoDB 对
  • SQL Server:如何获取排它锁以防止竞争条件?

    我有以下 T SQL 代码 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE BEGIN TRANSACTION T1 Test This is a dummy table used for lock
  • PHP 多个复选框删除

    我很难解决删除多个复选框的问题 有人可以指导我找到解决方案吗 这里应该发生的是 用户可以勾选复选框并单击删除按钮来删除勾选的框 不幸的是 我的代码似乎不起作用 你能为我指出正确的方向吗 div class page img class pa
  • 为什么必须声明 Typescript 的环境接口实现?

    我有一些接口及其实现的定义 每个实现类都必须声明许多方法 我发现它乏味且多余 因为它只是一个定义 是否只是缺乏时间来实现此功能 或者为什么应该强制执行环境实现定义背后的某些想法 或者我错过了什么 UPDATE 我现在不喜欢我的问题 它是从一
  • 这是批处理文件注入吗?

    C gt batinjection OFF DEL c c batinjection bat 的内容为ECHO 我听说过 SQL 注入 虽然我从未真正做过 但这就是注入吗 有不同类型的注射吗 这是其中之一吗 或者还有另一个技术术语吗 或者更
  • 如何覆盖 AWS-SDK-CPP 中的端点以连接到 localhost:9000 处的 minio 服务器

    我尝试过类似的东西 Aws Client ClientConfiguration config config endpointOverride Aws String localhost 9000 这是行不通的 看来AWS SDK CPP默认
  • Pyspark 按另一个数据帧的列过滤数据帧

    不知道为什么我在这方面遇到困难 考虑到在 R 或 pandas 中相当容易做到 它看起来很简单 我想避免使用 pandas 因为我正在处理大量数据 而且我相信toPandas 将所有数据加载到 pyspark 中的驱动程序内存中 我有 2