PySpark - 将 DF 列合并到命名的 StructType 中

2023-12-22

我希望将 PySpark 数据帧的多列合并到StructType.

假设我有一个像这样的数据框:

columns = ['id', 'dogs', 'cats']
vals = [(1, 2, 0),(2, 0, 1)]
df = sqlContext.createDataFrame(vals, columns)

我希望生成的数据框与此类似(不是因为它实际上会被打印,而是为了让您了解我的意思,如果您还不熟悉 StructType):

id | animals
1  | dogs=2, cats=0
2  | dogs=0, cats=1

现在我可以通过这样实现我想要的:

StructType(
    [StructField('dogs', IntegerType(), True),
    [StructField('cats', IntegerType(), True)
)

在我的最后udf然而,我宁愿只用一个函数来完成它。如果不存在的话我会感到惊讶。


如果您需要一个map column:创建以列名作为键的文字列,然后使用create_map https://spark.apache.org/docs/2.2.0/api/python/pyspark.sql.html#pyspark.sql.functions.create_map函数来构造您需要的地图列:

from pyspark.sql.functions import create_map, lit
new_df = df.select(
    'id', 
     create_map(lit('dogs'), 'dogs', lit('cats'), 'cats').alias('animals')
     #                key  :  val,        key   :   val
)

new_df.show(2, False)
#+---+----------------------+
#|id |animals               |
#+---+----------------------+
#|1  |[dogs -> 2, cats -> 0]|
#|2  |[dogs -> 0, cats -> 1]|
#+---+----------------------+

new_df.printSchema()
#root
# |-- id: long (nullable = true)
# |-- animals: map (nullable = false)
# |    |-- key: string
# |    |-- value: long (valueContainsNull = true)

如果您需要一个struct column: 使用struct https://spark.apache.org/docs/2.2.0/api/python/pyspark.sql.html#pyspark.sql.functions.struct功能:

from pyspark.sql.functions import struct
new_df = df.select('id', struct('dogs', 'cats').alias('animals'))
new_df.show(2, False)
#+---+-------+
#|id |animals|
#+---+-------+
#|1  |[2, 0] |
#|2  |[0, 1] |
#+---+-------+

new_df.printSchema()
#root
# |-- id: long (nullable = true)
# |-- animals: struct (nullable = false)
# |    |-- dogs: long (nullable = true)
# |    |-- cats: long (nullable = true)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PySpark - 将 DF 列合并到命名的 StructType 中 的相关文章

  • for 循环如何评估其参数

    我的问题很简单 Does a for循环评估它每次使用的参数 Such as for i in range 300 python 是否会为此循环的每次迭代创建一个包含 300 个项目的列表 如果是的话 这是避免这种情况的方法吗 lst ra
  • Python从int到string的快速转换

    我正在用 python 求解大量阶乘 并发现当我完成计算阶乘时 需要相同的时间才能转换为字符串以保存到文件中 我试图找到一种将 int 转换为字符串的快速方法 我将举一个计算和 int 转换时间的例子 我正在使用通用的 a str a 但感
  • 希伯来语中的稀疏句子标记化错误

    尝试对希伯来语使用稀疏句子标记 import spacy nlp spacy load he doc nlp text sents list doc sents I get Warning no model found for he Onl
  • Tweepy StreamListener 到 CSV

    我是 python 新手 我正在尝试开发一个应用程序 使用 Tweepy 和 Streaming API 从 Twitter 检索数据并将数据转换为 CSV 文件 问题是此代码不会创建输出 CSV 文件 也许是因为我应该将代码设置为在实现例
  • 如何在 PyCharm 4.5.2 中使用 PyPy 作为标准/默认解释器?

    如何在 PyCharm 4 5 2 中使用 PyPy 作为标准 默认解释器 一切都在 Ubunutu 14 10 下运行 并且 pypy 已经安装 您可以在项目的设置下进行配置 这个官方文档直接涵盖了 https www jetbrains
  • 更新 Sqlalchemy 中的多个列

    我有一个在 Flask 上运行的应用程序 并使用 sqlalchemy 与数据库交互 我想用用户指定的值更新表的列 我正在使用的查询是 def update table value1 value2 value3 query update T
  • 当单词以“|”分隔时如何读取文件(埃因霍温)?

    在Python中 我有一个文件 其中的单词由 例如 city state zipcode 我的文件阅读器无法区分单词 另外 我希望我的文件阅读器从第 2 行而不是第 1 行开始 如何让我的文件阅读器分隔单词 import os import
  • 如何将 self 传递给装饰器?

    我该如何通过self key下面进入装饰器 class CacheMix object def init self args kwargs super CacheMix self init args kwargs key func Cons
  • Python Pandas 根据另一列的总计从另一个数据帧中选择值

    我下面有一个 DataFrame 但我需要根据取消和订单列从每个代码中选择行 假设代码 xxx 的阶数为 6 1 5 1 阶数为 11 我需要一种算法 可以选择满足总共 11 行的行 阶数为 6 5 如果没有行匹配 则选择最接近的 id 并
  • 使用 scipy curve_fit 拟合噪声指数的建议?

    我正在尝试拟合通常按以下方式建模的数据 def fit eq x a b c d e return a 1 np exp x b c np exp x d e x np arange 0 100 0 001 y fit eq x 1 1 1
  • 与 while 循环一样,如何跳过 for 循环中的步骤?

    我尝试像 while 循环一样跳过 for 循环中的几个步骤 在 while 循环中 步骤根据特定条件进行调整 如下面的代码所示 i 0 while i lt 10 if i 3 i 5 else print i i i 1 result
  • Python 惰性迭代器

    我试图了解迭代器表达式如何以及何时被求值 以下似乎是一个懒惰的表达 g i for i in range 1000 if i 3 i 2 然而 这个在构造上失败了 g line strip for line in open xxx r if
  • 如何使用 sys.path.append 在 Python 中导入文件?

    我的桌面上有两个目录 DIR1 and DIR2其中包含以下文件 DIR1 file1 py DIR2 file2 py myfile txt 这些文件包含以下内容 file1 py import sys sys path append s
  • 具有屏蔽无效值的 pcolormesh

    我试图将一维数组绘制为 pcolormesh 因此颜色沿 x 轴变化 但每个 x 的 y 轴保持不变 但我的数据有一些错误值 因此我使用屏蔽数组和自定义颜色图 其中屏蔽值设置为蓝色 import numpy as np import mat
  • 无法在 python 3.8 上将带有 webapp 的 python 部署到 azure

    我正在尝试使用部署一个测试项目Flask使用以下方法将框架迁移到 Azure 云中Azure CLI https learn microsoft com en us azure app service containers quicksta
  • 是否可以将 pd.Series 分配给无序 pd.DataFrame 中的列而不映射到索引(即不重新排序值)?

    在 Pandas 中创建或分配新列时 我发现了一些意外的行为 当我对 pd DataFrame 进行过滤或排序 从而混合索引 然后从 pd Series 创建新列时 Pandas 会重新排序该系列以映射到 DataFrame 索引 例如 d
  • 在 virtualenvwrapper 中激活环境

    我安装了virtualenv and virtualenvwrapper用这个命令我创建了一个环境 mkvirtualenv cv 它有效 创建后我就处于新环境中 现在我重新启动了我的电脑 我想activate又是那个环境 但是怎么样 我使
  • 如何在 robobrowser-python 中发出 POST 请求

    http robobrowser readthedocs org en latest api html http robobrowser readthedocs org en latest api html 我正在尝试使用 APIbrows
  • 如何在单元测试中使用 JSON 发送请求

    我的 Flask 应用程序中有在请求中使用 JSON 的代码 我可以像这样获取 JSON 对象 Request request get json 这一直工作得很好 但是我正在尝试使用 Python 的 unittest 模块创建单元测试 但
  • python sklearn中的fit方法

    我问自己关于 sklearn 中拟合方法的各种问题 问题1 当我这样做时 from sklearn decomposition import TruncatedSVD model TruncatedSVD svd 1 model fit X

随机推荐

  • 读取 BIOS 级汇编中的输入? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在创建一个非常低级的应用程序 并且我已准备好引导加载程序 我本质上必须重建 scanf 函数 因为
  • 如何为 Visual Studio C++ 设置单元测试

    我无法弄清楚如何设置测试框架并使其可用视觉工作室2008 for C 大概是使用内置的单元测试套件 任何链接或教程将不胜感激 这一页 http gamesfromwithin com exploring the c unit testing
  • 具有多个不同图标的很棒的字体类

    我想创建带有多个图标的自定义 font awesome 类 即 2star 等级由 2 颗星和 3 颗空星组成 并排成一条线 彼此相邻 有没有办法在 CSS 中做到这一点 或者我必须使用具有多个 i class 的纯 html 解决方案 是
  • 从 FedEx 获取 OAuth 令牌以用于 Track API

    我正在尝试获取 OAuth 令牌来获得对某些 FedEx API 的授权访问权限 例如用于跟踪货件的 Track API 但我得到了401 NOT AUTHORIZED ERROR gt The given client credentia
  • 如何获取最后一个之前的元素?

    在量角器中 有 first and last 可用的方法ElementArrayFinder var elements element all by css myclass elements last elements first 但是 如
  • 比较两组字符串,返回不同的结果[重复]

    这个问题在这里已经有答案了 我运行这个command https i stack imgur com fojMC png在Python控制台中 为什么2个结果不同 gt gt gt S1 HelloWorld gt gt gt S2 Hel
  • 作为函数参数传递时如何停止评估 lisp 形式?

    我正在学习 Lisp 现在我正在尝试创建一个函数 该函数采用一些有效的 Lisp 形式作为参数 并返回一个在调用时执行 Lisp 形式的函数 例如 defun fn name action setf symbol function name
  • 点击按钮执行sql查询

    nw check php
  • 如何对 ngControl 用 @Self 修饰的反应式组件进行单元测试

    我通过注入 NgControl 编写了一个反应式组件 并使用 Self 装饰器进行装饰 我的问题与此类组件的单元测试有关 请看下面的代码 免责声明 我很快复制了代码并进行了一些内联更改 因此 这可能不是编译器满意的代码 我的反应组件 Com
  • 如何在 next.js 中渲染之前等待复杂的 redux-saga 操作流程完成?

    我在等待 一个操作流程 从开始到结束完成时遇到问题 该应用程序在客户端中照常工作 但在服务器端执行操作时它直到最后才完成 为了澄清这一点 我正确地使用了 next redux wrapper 和 next redux saga 因为当我使用
  • 忽略 __del__() 中打印到 stderr 的异常

    根据Python 2 7 文档 http docs python org 2 reference datamodel html 由于 del 方法在不稳定的情况下 调用时 执行期间发生的异常将被忽略 并且 警告会打印到 sys stderr
  • 如何关闭 SWI-Prolog 标志?

    我不确定 flags 是否是合适的术语 但是是否有办法将 swi prolog 程序配置为在完成查询时不输出 true 或 false 而是简单地打印出程序中确定的另一个语句 有一个工具可以定制这种行为 但它可能会涉及很多 我自己没有使用过
  • 是否可以使用networkx为每个节点绘制多种颜色的图形

    我想为空手道俱乐部图的节点和边缘着色 但有些节点有不止一种颜色 有没有办法在 python 中用多种颜色对节点进行着色 尤其是使用 networkx 我需要这样的东西 这是可以做到的 但可能需要大量工作才能获得您想要的确切结果 你可以从Ne
  • Gram-Schmidt正交化算法的计算复杂度

    Gram Schmidt 正交化算法的计算复杂度是多少 假设矩阵为m行和k列 计算正交化需要多少次操作 如果可能的话 我希望获得乘法和加法的确切次数 编辑 在我看来 运算总数 乘法 加法 是3 2k 2m 3 2mk k 2 2 k 2 我
  • ASP.NET Core Azure 应用服务 httpContext.Request.Headers["Host"] 值

    今天遇到奇怪的行为 我们使用 Azure 应用服务托管 asp net core 1 1 Web 应用程序 并使用路由到特定控制器或区域的子域 所以在我的 SubdomainConstraint IRouteConstraint 中我使用
  • Android 7 不允许我的 LetsEncrypt SSL 证书

    我将 nginx 与我自己的 SSL 证书链一起使用 但我在 android 7 上遇到了问题 我不明白这个解决方案 https community letsencrypt org t android doesnt trust the ce
  • Razor 没有将我的“选定”值写入页面

    我设置了以下循环 它可以正确填充选择控件
  • 在 vi 中重复导航命令

    如何在 vi 中重复导航命令 例如我执行命令20j它将光标向下移动 20 行 我尝试点击 重复该命令 但它说 没有可重复的命令 附 另外 什么命令会转到文档的下一页 没有重复上一个导航命令的快捷方式 您必须重新输入它 或者设置您自己的某种快
  • 查找MySQL中同一列中两个值之间的差异

    我有一个名为 MySQL 的简单表 其中包含股价 Table share prices stock id price date 1 0 05 2010 02 24 01 00 00 2 3 25 2010 02 24 01 00 00 3
  • PySpark - 将 DF 列合并到命名的 StructType 中

    我希望将 PySpark 数据帧的多列合并到StructType 假设我有一个像这样的数据框 columns id dogs cats vals 1 2 0 2 0 1 df sqlContext createDataFrame vals