PySpark:当列是列表时向 DataFrame 添加列

2024-01-04

我读过类似的问题,但找不到解决我的具体问题的方法。

我有一个清单

l = [1, 2, 3]

和一个数据框

df = sc.parallelize([
    ['p1', 'a'],
    ['p2', 'b'],
    ['p3', 'c'],
]).toDF(('product', 'name'))

我想获得一个新的 DataFrame,其中列表l添加为另一列,即

+-------+----+---------+
|product|name| new_col |
+-------+----+---------+
|     p1|   a|     1   |
|     p2|   b|     2   |
|     p3|   c|     3   |
+-------+----+---------+

接近 JOIN,我正在加入 df 与

 sc.parallelize([[1], [2], [3]])

失败了。使用方法withColumn, as in

new_df = df.withColumn('new_col', l)

失败,因为该列表不是Column object.


所以,通过阅读一些有趣的东西here https://stackoverflow.com/questions/29483498/append-a-column-to-data-frame-in-apache-spark-1-3,我已经确定你不能真的只是将随机/任意列附加到给定的DataFrame目的。看来你想要的更多的是zip than a join。我环顾四周发现这张票 https://issues.apache.org/jira/browse/SPARK-7460,这让我觉得你不能zip鉴于你有DataFrame而不是RDD对象。

我能够解决你的问题的唯一方法就是离开这个世界DataFrame对象并返回到RDD对象。我还需要为连接目的创建一个索引,这可能适合也可能不适合您的用例。

l = sc.parallelize([1, 2, 3])
index = sc.parallelize(range(0, l.count()))
z = index.zip(l)

rdd = sc.parallelize([['p1', 'a'], ['p2', 'b'], ['p3', 'c']])
rdd_index = index.zip(rdd)

# just in case!
assert(rdd.count() == l.count())
# perform an inner join on the index we generated above, then map it to look pretty.
new_rdd = rdd_index.join(z).map(lambda (x, y): [y[0][0], y[0][1], y[1]])
new_df = new_rdd.toDF(["product", 'name', 'new_col'])

当我跑步时new_df.show(), I get:

+-------+----+-------+
|product|name|new_col|
+-------+----+-------+
|     p1|   a|      1|
|     p2|   b|      2|
|     p3|   c|      3|
+-------+----+-------+

旁注:我真的很惊讶这不起作用。看起来像外连接?

from pyspark.sql import Row
l = sc.parallelize([1, 2, 3])
new_row = Row("new_col_name")
l_as_df = l.map(new_row).toDF()
new_df = df.join(l_as_df)

当我跑步时new_df.show(),我得到:

+-------+----+------------+
|product|name|new_col_name|
+-------+----+------------+
|     p1|   a|           1|
|     p1|   a|           2|
|     p1|   a|           3|
|     p2|   b|           1|
|     p3|   c|           1|
|     p2|   b|           2|
|     p2|   b|           3|
|     p3|   c|           2|
|     p3|   c|           3|
+-------+----+------------+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PySpark:当列是列表时向 DataFrame 添加列 的相关文章

  • 如何在python 3.7中生成条形码

    我正在使用 python 3 7 为了生成条形码 我尝试使用安装 pyBarcode 库pip install pyBarcode 但它显示以下错误 找不到满足 pyBarcode 要求的版本 来自版本 找不到 pyBarcode 的匹配分
  • 使用 pygame 显示 unicode 符号

    我检查了其他答案 但不明白为什么我的代码错误地显示 This is what I currently see https i stack imgur com 8tNIK png 这是关于文本渲染的相关代码 font pygame font
  • python 中的并行处理

    在 python 2 7 中进行并行处理的简单代码是什么 我在网上找到的所有示例都很复杂 并且包含不必要的代码 我该如何做一个简单的强力整数分解程序 在每个核心 4 上分解 1 个整数 我真正的程序可能只需要2个核心 并且需要共享信息 我知
  • 如何在Python中同时运行两只乌龟?

    我试图让两只乌龟一起移动 而不是一只接着另一只移动 例如 a turtle Turtle b turtle Turtle a forward 100 b forward 100 但这只能让他们一前一后地移动 有没有办法让它们同时移动 有没有
  • Mac OS X 中文件系统的 Unicode 编码在 Python 中不正确?

    在 OS X 和 Python 中处理 Unicode 文件名有点困难 我试图在代码中稍后使用文件名作为正则表达式的输入 但文件名中使用的编码似乎与 sys getfilesystemencoding 告诉我的不同 采取以下代码 usr b
  • 如何在 Python 中加密并在 Java 中解密?

    我正在尝试在 Python 程序中加密一些数据并将其保存 然后在 Java 程序中解密该数据 在Python中 我像这样加密它 from Crypto Cipher import AES KEY 1234567890123456789012
  • Emacs 24.x 上的 IPython 支持

    我对 IPython 与 Emacs 的集成感到困惑 从 Emacs 24 开始 Emacs 附带了自己的python el 该文件是否支持 IPython 还是仅支持 Python 另外 维基百科 http emacswiki org e
  • Python新式类和__subclasses__函数

    有人可以向我解释为什么这有效 在 Python 2 5 中 class Foo object pass class Bar Foo pass print Foo subclasses 但这不是 class Foo pass class Ba
  • 在 Windows 上使用 apache mod_wsgi 运行 Flask 应用程序时导入冲突

    我允许您询问我在 Windows 上使用您的 mod wsgi portage 托管 Flask 应用程序时遇到的问题 我有两个烧瓶应用程序 由于导入冲突 只有一个可以同时存在 IE 如果请求申请 1 我有回复 然后 如果我请求应用程序 2
  • Tensorflow 与 Keras 的兼容性

    我正在使用 Python 3 6 和 Tensorflow 2 0 并且有一些 Keras 代码 import keras from keras models import Sequential from keras layers impo
  • Geodjango距离查询未检索到正确的结果

    我正在尝试根据地理位置的接近程度来检索一些帖子 正如您在代码中看到的 我正在使用 GeoDjango 并且代码在视图中执行 问题是距离过滤器似乎被完全忽略了 当我检查查询集上的距离时 我得到了预期距离 1m 和 18km 但 18km 的帖
  • 如何在 pandas 中使用 read_fwf 跳过空行?

    I use pandas read fwf http pandas pydata org pandas docs stable generated pandas read fwf htmlPython pandas 0 19 2 中的函数读
  • 使用 Keras np_utils.to_categorical 的问题

    我正在尝试将整数的 one hot 向量数组制作为 keras 将能够使用的 one hot 向量数组来拟合我的模型 这是代码的相关部分 Y train np hstack np asarray dataframe output vecto
  • Python:IndexError:修改代码后列表索引超出范围

    我的代码应该提供以下格式的输出 我尝试修改代码 但我破坏了它 import pandas as pd from bs4 import BeautifulSoup as bs from selenium import webdriver im
  • Mac OSX 10.6 上的 Python mysqldb 不工作

    我正在使用 Python 2 7 并尝试让 Django 项目在 MySQL 后端运行 我已经下载了 mysqldb 并按照此处的指南进行操作 http cd34 com blog programming python mysql pyth
  • Django Admin 中的反向内联

    我有以下 2 个型号 现在我需要将模型 A 内联到模型 B 的页面上 模型 py class A models Model name models CharField max length 50 class B models Model n
  • 混淆矩阵不支持多标签指示符

    multilabel indicator is not supported是我在尝试运行时收到的错误消息 confusion matrix y test predictions y test is a DataFrame其形状为 Horse
  • TKinter 中的禁用/启用按钮

    我正在尝试制作一个像开关一样的按钮 所以如果我单击禁用按钮 它将禁用 按钮 有效 如果我再次按下它 它将再次启用它 我尝试了 if else 之类的东西 但没有成功 这是一个例子 from tkinter import fenster Tk
  • 多个对象以某种方式相互干扰[原始版本]

    我有一个神经网络 NN 当应用于单个数据集时 它可以完美地工作 但是 如果我想在一组数据上运行神经网络 然后创建一个新的神经网络实例以在不同的数据集 甚至再次同一组数据 上运行 那么新实例将产生完全错误的预测 例如 对 XOR 模式进行训练
  • 使用ssl和socket的python客户端身份验证

    我有一个 python 服务器 需要客户端使用证书进行身份验证 我如何制作一个客户端脚本 使用客户端证书由 python 中的服务器使用 ssl 和套接字模块进行身份验证 有没有仅使用套接字和 ssl 而不扭曲的示例 from OpenSS

随机推荐

  • 如何让 .NET 取消未使用的 RAM?

    以下是我的程序在极其密集地使用内存后的统计数据 在峰值时消耗 6 GB 但随后将所有内容保存到磁盘并在范围内留下很少的内容 观察到几乎所有内容都超出了范围并已被垃圾收集 堆大小很小 然而 NET 保留了 181 MB坚定的 我不介意保留字节
  • 如何将 warnings() 输出转换为字符串

    当我在控制台输入 warnings 时 我回来了 Warning message In fread my directory C function strtod returned ERANGE for one or more fields
  • 在 google colab 中找不到 kaggle.json 文件

    我正在尝试将 kaggle imagenet 对象本地化挑战数据下载到 google colab 中 以便我可以用它来训练我的模型 Kaggle 使用 API 来轻松快速地访问其数据集 https github com Kaggle kag
  • 当我添加对 Cargo.toml 文件的依赖项时,阻止等待包缓存上的文件锁定

    我向 Rust 项目添加了依赖项 然后运行了 Cargo Run 这给了我这个错误 阻止等待包缓存上的文件锁定 我尝试了在网上找到的解决方案 即删除 cargo package cache 文件 但这对我不起作用 当我输入类似 cargo
  • 计划任务调用的批处理文件在计划时抛出错误,双击时运行正常

    我有一个映射网络驱动器的批处理文件 大约一周前 密码过期了 因此调用批处理文件的程序开始抛出错误 我已经更新了批处理文件中的密码 当我双击批处理文件时 驱动器映射正常 但是 当计划任务开始时 我收到以下错误 Logon failure un
  • 我们可以使用 match 来检查类的类型吗

    我是 scala 新手 我正在学习match现在关键字 我想知道我们是否可以使用关键字match检查类的类型 我的代码是 object Main def main args Array String val x AA checkType x
  • Java EE/JPA 向数据库添加新表/实体的方法

    我有一个mysql数据库 我想添加向数据库添加新表的功能 我可能可以轻松找到 JPQL 的示例 但是如何自动为这个新表生成实体 以便我可以在 JPA 代码的其余部分中引用它 以便从表中更新和删除我通常引用该实体不是实际的表本身 我现在拥有的
  • 如何在 Windows 上使用 PyInstaller 创建 Linux 和 MacOS 可执行文件?

    我使用 Pyinstaller 从 python 代码制作了一个独立的 Windows 便携式应用程序 并且它工作正常 我知道要为某个操作系统创建可执行文件 必须在该特定操作系统上完成 有没有一种方法可以直接从 Windows 创建适用于其
  • 阻止 TFS 添加临时文件

    我正在开发一个在 TFS 中绑定的项目 该项目为我提供了一个文件夹 Log 当我执行我的项目并进行一些测试时 它会生成文本文件并存储在 Log 文件夹中 之后 当我尝试签入文件时 这些文件将作为 TFS 中的新文件签入 我希望 TFS 排除
  • python 将 10 位日期时间戳转换为 13 位 GMT 时间戳 [重复]

    这个问题在这里已经有答案了 我从像这样的服务器收到时间戳 1512543958 当我在标头中发回请求时 我看到像这样的 13 位 GMT 时间戳 1512544485819 通过使用下面的代码将时间更改为本地时间 我得到2017 12 06
  • 无状态 Web 应用程序,都市传奇?

    我试图理解token based authentication这些天 它声称是stateless authentication方法 我遇到了这个概念stateless web application 以下是我读到的一些主题 使用 Sprin
  • Ionic4 未知浏览器查询

    我已经练习了很多 Ionic 所以这些问题对我来说并不新鲜 但我无法解决这个问题 我目前正在尝试将我的 Ionic3 项目迁移到 Ionic4 为此 我创建了一个新的 Ionic4 选项卡项目 每次我尝试 Ionic 服务命令时 我都会得到
  • 如何在浏览器客户端使用nunjucks宏?

    当我从 node js 预编译并公开 JS 模板文件时 我可以使用 nunjucks 的客户端模板 我这样称呼客户端模板 nunjucks render partials some template html abc 123 并拿回一根绳子
  • 2.10 中 Scala REPL breakIf 的替代方案

    我正在读书here https stackoverflow com questions 2160355 drop into interpreter during arbitrary scala code location关于使用breakI
  • IE7清除浮动问题

    您好 这是我在使用 IE7 时遇到的问题的简化版本 基本上 清除的 div 绿色 之后的 div 不会按预期运行 在 IE7 中 它在 Safari FF 等和 IE8 中按预期工作 有人有任何修复建议吗 谢谢你的帮助
  • Angular Material 更改应用程序背景和前景主题

    这个问题 https stackoverflow com questions 43919927 关于在 Angular Material 中设置背景颜色的问题于 2017 年发布 答案已过时 最新版本的 Angular Material 1
  • JPQL:将 varchar 转换为数字

    如何将 varchar 转换为 JPQL 中的数字 我设法在 sql Oracle 中使用以下查询来做到这一点 SELECT Decode Upper column name Lower column name To Number colu
  • 处理 argparse 冲突

    如果我导入一个Pythonmodule https github com paulcalabro api kickstart blob master examples python config py已经在使用argparse 但是 我想用
  • 按具有自定义排序优先级的列对数组的数组进行排序(不按字母顺序)

    假设我有这个数组 array array array id gt 7867867 animal gt Dog array id gt 3452342 animal gt Lion array id gt 1231233 animal gt
  • PySpark:当列是列表时向 DataFrame 添加列

    我读过类似的问题 但找不到解决我的具体问题的方法 我有一个清单 l 1 2 3 和一个数据框 df sc parallelize p1 a p2 b p3 c toDF product name 我想获得一个新的 DataFrame 其中列