从 PySpark DataFrame 中的 Python 列表列表中删除元素

2023-11-27

我正在尝试从 Python 列表中删除一个元素:

+---------------+
|        sources|
+---------------+
|           [62]|
|        [7, 32]|
|           [62]|
|   [18, 36, 62]|
|[7, 31, 36, 62]|
|    [7, 32, 62]|

我希望能够删除一个元素,rm,来自上面列表中的每个列表。我编写了一个可以对列表列表执行此操作的函数:

def asdf(df, rm):
    temp = df
    for n in range(len(df)):
        temp[n] = [x for x in df[n] if x != rm]
    return(temp)

这确实删除了rm = 1:

a = [[1,2,3],[1,2,3,4],[1,2,3,4,5]]
In:  asdf(a,1)
Out: [[2, 3], [2, 3, 4], [2, 3, 4, 5]]

但我无法让它适用于 DataFrame:

asdfUDF = udf(asdf, ArrayType(IntegerType()))

In: df.withColumn("src_ex", asdfUDF("sources", 32))

Out: Py4JError: An error occurred while calling z:org.apache.spark.sql.functions.col. Trace:
py4j.Py4JException: Method col([class java.lang.Integer]) does not exist

期望的行为:

In: df.withColumn("src_ex", asdfUDF("sources", 32))
Out: 

+---------------+
|         src_ex|
+---------------+
|           [62]|
|            [7]|
|           [62]|
|   [18, 36, 62]|
|[7, 31, 36, 62]|
|        [7, 62]|

(除了将上面的新列附加到 PySpark DataFrame 之外,df)

有什么建议或想法吗?


火花 >= 2.4

您可以使用array_remove:

from pyspark.sql.functions import array_remove

df.withColumn("src_ex", array_remove("sources", 32)).show()
+---------------+---------------+
|        sources|         src_ex|
+---------------+---------------+
|           [62]|           [62]|
|        [7, 32]|            [7]|
|           [62]|           [62]|
|   [18, 36, 62]|   [18, 36, 62]|
|[7, 31, 36, 62]|[7, 31, 36, 62]|
|    [7, 32, 62]|        [7, 62]|
+---------------+---------------+

or filter:

from pyspark.sql.functions import expr

df.withColumn("src_ex", expr("filter(sources, x -> not(x <=> 32))")).show()
+---------------+---------------+
|        sources|         src_ex|
+---------------+---------------+
|           [62]|           [62]|
|        [7, 32]|            [7]|
|           [62]|           [62]|
|   [18, 36, 62]|   [18, 36, 62]|
|[7, 31, 36, 62]|[7, 31, 36, 62]|
|    [7, 32, 62]|        [7, 62]|
+---------------+---------------+

火花

有很多事情:

  • DataFrame不是一个列表列表。实际上,它甚至不是一个普通的 Python 对象,它没有len它不是Iterable.
  • 你的专栏看起来很简单array type.
  • 你无法参考DataFrame(或 UDF 内的任何其他分布式数据结构)。
  • 直接传递给 UDF 调用的每个参数都必须是str(列名称)或Column目的。传递字面意义的使用lit功能。

唯一剩下的只是列表理解:

from pyspark.sql.functions import lit, udf

def drop_from_array_(arr, item):
    return [x for x in arr if x != item]

drop_from_array = udf(drop_from_array_, ArrayType(IntegerType()))

用法示例:

df = sc.parallelize([
    [62], [7, 32], [62], [18, 36, 62], [7, 31, 36, 62], [7, 32, 62]
]).map(lambda x: (x, )).toDF(["sources"])

df.withColumn("src_ex", drop_from_array("sources", lit(32)))

结果:

+---------------+---------------+
|        sources|         src_ex|
+---------------+---------------+
|           [62]|           [62]|
|        [7, 32]|            [7]|
|           [62]|           [62]|
|   [18, 36, 62]|   [18, 36, 62]|
|[7, 31, 36, 62]|[7, 31, 36, 62]|
|    [7, 32, 62]|        [7, 62]|
+---------------+---------------+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 PySpark DataFrame 中的 Python 列表列表中删除元素 的相关文章

  • 如何将字典转换为字符串

    我正在尝试使用提供的解决方案here https stackoverflow com questions 5192753 how to get the number of occurrences of each character usin
  • pandas 系列值之间的过滤

    If s is a pandas Series http pandas pydata org pandas docs stable dsintro html series 我知道我可以这样做 b s lt 4 or b s gt 0 但我做
  • Python 中的自然日/相对日

    我想要一种在 Python 中显示日期项目的自然时间的方法 类似于 Twitter 将显示 刚才 几分钟前 两小时前 三天前 等消息 Django 1 0 在 django contrib 中有一个 人性化 方法 我没有使用 Django
  • 我应该将Python的pyc文件添加到.dockerignore吗?

    我见过几个例子 dockerignorePython 项目的文件 其中 pyc文件和 或 pycache 文件夹被忽略 pycache pyc 由于无论如何这些文件 文件夹都会在容器中重新创建 我想知道这样做是否是一个好习惯 是的 这是一个
  • Python 中字典的合并层次结构

    我有两本词典 而我想做的事情有点奇怪 基本上 我想合并它们 这很简单 但它们是字典的层次结构 我想以这样的方式合并它们 如果字典中的项目本身就是字典并且存在于两者中 我也想合并这些字典 如果它不是字典 我希望第二个字典中的值覆盖第一个字典中
  • Pandas系列矢量化文本处理

    我想使用矢量化操作改进我的 Pandas 代码 假设我有一个简单的 DataFrame 其中有一个文本列 其中可能包含 url Column1 0 hello http www google com 1 bye www mail com w
  • 在 Flask 中将配置文件作为字典读取

    在 instance app cfg 我已经配置 test test 在我的烧瓶文件 app py 中 with app open instance resource app cfg as f config f read print con
  • 如何在 django admin 中使用自定义字段进行搜索

    我有一个模型并已注册到管理员 并且我已使用自定义字段在列表中显示 class ReportsAdmin admin ModelAdmin def investment self inst return models OrderDetail
  • While 在范围内循环用户输入

    我有一些代码 我想要求用户输入 1 100 之间的数字 如果他们在这些数字之间输入一个数字 它将打印 Size input 并打破循环 但是 如果他们在外部输入一个数字1 100 它将打印 大小 输入 并继续向他们重新询问一个数字 但我遇到
  • 如何在 Spark Dataframe 中显示完整的列内容?

    我正在使用 Spark csv 将数据加载到 DataFrame 中 我想做一个简单的查询并显示内容 val df sqlContext read format com databricks spark csv option header
  • .NET 是否有相当于 Python 中的 **kwargs 的功能?

    我一直无法通过典型渠道找到这个问题的答案 在Python中我可以有以下函数定义 def do the needful kwargs Kwargs is now a dictionary i e do the needful spam 42
  • Keras CNN 回归模型损失低,准确度为 0

    我在 keras 中遇到这个 NN 回归模型的问题 我正在研究一个汽车数据集 以根据 13 个维度预测价格 简而言之 我已将其读取为 pandas 数据帧 将数值转换为浮点数 缩放值 然后对分类值使用 one hot 编码 这创建了很多新列
  • 为什么使用 LAMP 托管时避免使用 CGI for Python?

    我已经使用 PHP 多年了 最近我在论坛上看到很多帖子说PHP 已经过时了 现代编程语言更简单 更安全等等 所以 我决定开始学习Python 由于我习惯使用 PHP 因此我刚刚开始通过上传 htaccess 文件来构建页面 addtype
  • 忽略稀疏矩阵中的重复条目

    我尝试过初始化csc matrix and csr matrix从列表中 data rows cols 值如文档所示 sparse csc matrix data rows cols shape n n 问题是 我实际上拥有的生成方法dat
  • Pandas 数据透视表同时包含多列

    我怀疑是否pandas pivot table可以一次接受两列并单独处理它们 而不是分层处理 假设我有以下数据框 id date day val 101 11 1 1 1 2 1 101 11 1 2 2 2 2 101 11 1 3 3
  • Pyspark:相当于 np.where [重复]

    这个问题在这里已经有答案了 这个操作在 Pyspark 中相当于什么 import pandas as pd import numpy as np df pd DataFrame Type list ABBC Set list ZZXY d
  • Python 中的否定

    如果路径不存在 我尝试创建一个目录 但是 不 运算符不起作用 我不知道如何在 Python 中进行否定 正确的方法是什么 if os path exists usr share sounds blues proc subprocess Po
  • 在绘图中的线间隙之间添加注释

    I have a graph like this 而不是在上面的日子symbol 我想知道是否有办法可以在行之间添加此注释 从一个点到另一个点 如果以防万一 这可能是重复的 我深表歉意 This is my expected output
  • python nltk从句子中提取关键字

    我们要做的第一件事 就是杀掉所有律师 威廉 莎士比亚 鉴于上面的引用 我想退出 kill and lawyers 作为两个突出的关键词来描述句子的整体含义 我提取了以下名词 动词 POS 标签 First NNP thing NN do V
  • Python DNS服务器IP地址查询

    我正在尝试使用 python 获取 DNS 服务器 IP 地址 要在 Windows 命令提示符下执行此操作 我将使用 ipconfig 全部 如下所示 我想使用 python 脚本做同样的事情 有什么方法可以提取这些值吗 我成功提取了设备

随机推荐

  • 如何在重新加载数据表时传递参数

    我有一个像这样初始化的数据表 mytable DataTable ajax url url getTableData dataSrc sortClasses false paging false scrollY 300 columns co
  • 如何在 Laravel 5.1 中实现“记住我”?

    如何在 Laravel 5 1 中实现记住我功能 谁能给我举个例子吗 Laravel 身份验证优惠记住账号开箱即用的功能 为了使用它 你需要做两件事 add 记住令牌用户表中的列 这是存储令牌的位置 pass true作为第二个参数验证 尝
  • Kivy 不工作(错误:无法找到任何有价值的 Window 提供程序。)

    我收到此错误 无法找到任何有价值的 Window 提供程序 kivy 继承了 完整 错误 INFO Logger Record log in C Users Victor kivy logs kivy 17 05 27 10 txt INF
  • 设备 emulator-5554 未获得授权。 (安卓)

    我遇到过类似的问题 emulator 5554 未经授权使用 adb 设备 1 基本上 我正在尝试使用 Windows 10 在 Android 虚拟设备上进行一些 flutter 编程 尽管我不认为这个问题是 flutter 特有的 启动
  • Git for Windows(64 位)中的 Maven classworlds.launcher.Launcher 错误

    我已经在 Git Bash 64 位 上使用 Maven 几个月了 突然它停止工作 并且现在在任何 Maven 命令上生成此错误 myuser mypc MINGW64 master mvn v Error Could not find o
  • SHA256 的“纯粹”方案实现(R5RS)?

    我可以在Scheme中使用SHA256 使用外部库 Java C或系统相关 或使用特定的Scheme实现 例如Chicken 但我想知道是否有一个 纯粹的 scheme实现 我今天写了一个实现 唉 R5RS 既没有字节向量也没有二进制 I
  • 为什么 WPF 中没有视觉继承?

    在 Windows 窗体中 让一个窗口继承另一个窗口有时很有用 但在WPF中 这是不允许的 为什么 WPF 窗口没有视觉继承 WPF 不支持视觉继承的原因是表单设计是通过标记 xaml 实现的 而不是使用代码隐藏来生成布局的 winform
  • xmllint DTD 验证语法

    尝试验证 XML 文档 但是 xmllint 坚持将选项作为文件读取 因此我收到 FileNotFound 异常 只是为了确认 我的 xmllint exe 与我的 XML 文件位于同一文件夹中 我在CMD中找到该目录并输入命令 xmlli
  • 在线共享和保护 Excel 文档(使用 Powerpivot),无需 Sharepoint 和 Power BI?

    我的一位客户制作了这份令人难以置信 而且非常巨大 的 Excel 文档 其中包含许多数据源 工作表 Powerpivot 表格 图表等 非常棒的工作 他希望与授权人员共享 但保护他有价值的内容 也称为数据源和文档 逻辑 例如 用户可以使用过
  • IdentityServer4 Net Core 2不调用自定义iProfileService

    我已将 Identity Server 项目升级到 Net Core 2 现在我无法调用 iProfileService 对象来添加自定义用户声明 它在 Net Core 1 中确实有效 Startup cs的ConfigureServic
  • 如何让 C 程序等待(在 Linux 上)?

    如何让 C 程序等待 在 Linux 上 我需要使用等待与 MPI 我需要 C 代码 如果要等待 MPI 请求 请使用 MPI Wait http www manpagez com man 3 MPI Wait 如果您想等待一定时间 请使用
  • gitk:奇怪的历史树

    我正在将 svn 存储库移植到 git 使用 svn2githttps www negativetwenty net redmine projects show svn2git 并且由于 svn 不跟踪合并 我需要手动编辑 git info
  • 为什么 .html() 不能与使用 jquery 的 SVG 选择器一起使用?

    Question有人可以告诉我如何将 SVG 元素转换为字符串吗 我在用着canvg将我的 SVG 转换为图像 它必须首先在画布中渲染 canvg 方法期待一个SVG STRING code function updateChartImag
  • 使用 Url 视图帮助链接时从 URL 中删除参数

    使用 Url view helper 构建链接时 如果当前页面的 url 中有参数 则 Url view helper 生成的 url 也会包含参数 例如在页面中 控制器 操作 参数 值 下面的代码 a href Dashboard a 将
  • 如何从WKInterfaceButton获取标题

    要获得标题 有函数 setTitle 但是如何将 WKInterfaceButton 的标题作为字符串获取 我没有找到任何东西https developer apple com library prerelease ios document
  • Python 2 中的类型提示

    In PEP 484 类型提示被添加到 Python 3 中 其中包括typing模块 在Python 2中有什么办法可以做到这一点吗 我能想到的就是有一个装饰器添加到方法中来检查类型 但这会在运行时失败 并且不会像提示所允许的那样更早被捕
  • AWS S3 中的“KeyError: 'Records'” - Lambda 触发器

    我有以下 lambda 函数代码 用于简单地打印 S3 存储桶的上传事件的作者和元数据 from future import print function import json import urllib import boto3 pri
  • 解析Robot Framework的输出xml

    机器人框架吐出一个输出 XML 然后用于构建 HTML 报告 带有rebot 重新运行失败等 我需要解析此文件以生成其他报告 特别是 我需要解析正则表达式的测试用例文档 获取测试用例结果 然后构建报告 这是为了与遗留系统集成 Robot F
  • 如何用新的 viewController 替换当前的 viewController

    我正在尝试用新的视图控制器替换当前的视图控制器 我之前已经能够做到这一点 但我遇到了一些 BAD ACCESS 问题 这是当我想用新视图替换当前视图时将运行的代码 该函数将使用本地属性 self some data 非原子 保留 调用 vo
  • 从 PySpark DataFrame 中的 Python 列表列表中删除元素

    我正在尝试从 Python 列表中删除一个元素 sources 62 7 32 62 18 36 62 7 31 36 62 7 32 62 我希望能够删除一个元素 rm 来自上面列表中的每个列表 我编写了一个可以对列表列表执行此操作的函数