迭代 PySpark GroupedData

2024-03-21

假设原始数据如下:

Competitor  Region  ProductA  ProductB
Comp1       A       £10       £15
Comp1       B       £11       £16
Comp1       C       £11       £15
Comp2       A       £9        £16
Comp2       B       £12       £14
Comp2       C       £14       £17
Comp3       A       £11       £16
Comp3       B       £10       £15
Comp3       C       £12       £15

(Ref: Python - 根据列值将数据帧拆分为多个数据帧并用这些值命名它们 https://stackoverflow.com/questions/40498463/python-splitting-dataframe-into-multiple-dataframes-based-on-column-values-and)

我希望根据列值获取子数据框列表,例如区域,例如:

df_A :

Competitor  Region  ProductA  ProductB
Comp1       A       £10       £15
Comp2       A       £9        £16
Comp3       A       £11       £16

在Python中我可以这样做:

for region, df_region in df.groupby('Region'):
    print(df_region)

如果 df 是 Pyspark df,我可以进行相同的迭代吗?

在 Pyspark 中,一旦我执行 df.groupBy("Region") 我就会得到 GroupedData。我不需要任何聚合,如计数、平均值等。我只需要子数据帧列表,每个数据帧都有相同的“区域”值。可能的?


假设分组列中的唯一值列表足够小以适合驱动程序的内存,下面的方法应该适合您。希望这可以帮助!

import pyspark.sql.functions as F
import pandas as pd

# Sample data 
df = pd.DataFrame({'region': ['aa','aa','aa','bb','bb','cc'],
                   'x2': [6,5,4,3,2,1],
                   'x3': [1,2,3,4,5,6]})
df = spark.createDataFrame(df)

# Get unique values in the grouping column
groups = [x[0] for x in df.select("region").distinct().collect()]

# Create a filtered DataFrame for each group in a list comprehension
groups_list = [df.filter(F.col('region')==x) for x in groups]

# show the results
[x.show() for x in groups_list]

Result:

+------+---+---+
|region| x2| x3|
+------+---+---+
|    cc|  1|  6|
+------+---+---+

+------+---+---+
|region| x2| x3|
+------+---+---+
|    bb|  3|  4|
|    bb|  2|  5|
+------+---+---+

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

迭代 PySpark GroupedData 的相关文章

随机推荐

  • LOCAL_MODULE_TAGS有什么用?

    我想更新包中的 Android mk 文件以构建新包 但我不明白该文件的目的是什么LOCAL MODULE TAGS is 什么是LOCAL MODULE TAGS do 更正 不再建议使用用户标签 反而 Add LOCAL MODULE
  • gitlab - 图标被矩形替换

    我最近安装了 gitlab 似乎所有图标都被矩形替换了 其他一切似乎都工作正常 知道是什么原因造成的吗 edit on another computer I seem to get Korean characters instead of
  • Ruby on Rails 实时搜索(过滤)

    我正在关注 Railscasts Rails ajax 教程并遇到了一些麻烦 实时搜索不起作用 我必须单击搜索按钮才能获取结果 我有两个搜索过滤器 第一个是 select tag 第二个是一个复选框 这是我的代码 结果 html erb t
  • 默认启动项目由什么决定?

    我有一个包含 Visual Studio 项目文件的开源项目 有一个包含四个项目文件的解决方案文件 当源文件被分发和解压时 Visual Studio 选择错误的项目作为默认项目 新用户不知道他们需要右键单击某个项目 然后选择设置为启动项目
  • Kendo Grid 导出到 Excel 时出错“无法读取 jQuery.js 文件中未定义的属性‘长度’”

    我正在尝试将剑道网格导出到 Excel 然后我在控制台中出现错误 如果有人知道的话请帮助我 提前致谢 angular js 13920 TypeError Cannot read property length of undefined a
  • 向我的免费 G​​itHub 帐户添加协作者?

    我创建了一个 GitHub 帐户 我想授予某人写入权限 以便他可以像我一样进行推送 有没有办法通过免费计划添加协作者 如果没有 我能做什么 除了购买付费帐户 这是我将来会做的 Go to Manage Access设置下的页面 https
  • 如何将旧式 Windows 图元文件写入文件

    我可以生成旧的 未增强的 图元文件 如何将其写入磁盘 使其成为正确的 wmf 文件 佩措尔德没有提到这一点 http www user tu chemnitz de heha petzold ch18b htm 但是将图元文件写入磁盘有一个
  • PHP 比较字符串是否(几乎)相等

    我需要比较可以用多种方式书写的名称 例如 像 St Thomas 这样的名字有时会写成 St Thomas 或 Sant Thomas 最好 我希望构建一个函数 为比较提供 平等 的百分比 就像一些论坛所做的那样 这篇文章已编辑 5 例如
  • 如何从应用程序后台录制视频:Android

    我正在开发一个应用程序 它将能够通过使用从应用程序后台录制视频Service 问题描述 1 我创建了一个活动来启动服务 如下所示 package com android camerarecorder import android app A
  • 由于缩放问题,响应式网站无法正确显示水平线

    我正在使用CSS向网站添加响应式功能 该网站已经属于他们一段时间了 现在正在添加响应式功能 以便它可以支持移动版本 我面临一个问题 假设有多行由水平线分隔 在某个地方我正在使用hr在某些地方我只是简单地使用div to 这是小提琴的示例链接
  • 在 ASP:Repeater 中查找控件

    我正在尝试访问中继器内的控件 该控件位于 标记内 我正在使用 FindControl 但它总是显示为 Null 我究竟做错了什么 我的猜测是 FindControl 只能用于记录级事件 例如 ItemDataBound protected
  • 评估连接速度的最佳方法

    我正在开发一个应用程序 需要通过流媒体获取音乐文件以进行现场播放 在请求歌曲 api 中 我可以指定带宽 例如 50kbps 100kbps 300 600 或 1 Mbps 带宽越大 获取文件的时间就越多 因为我不希望用户受到限制 所以我
  • 在 R Shiny 中捕获选择输入?

    我试图捕获当人们按下应用程序上的 获取 URL 按钮时所选择的 URL 应该发生的是event reactive 应该看看input go button并看到它已被按下 然后它应该执行表达式以从选择输入中获取所选的 url 不幸的是它什么也
  • FacesContext 和“Servlet”上下文

    有没有与 FacesContext 等效的东西 但是在 servlet 环境中 我有一些 DAOSessionManager 来处理我的数据库的事务 当当前页面是使用 JSF 编写时 我可以使用 FacesContext 来识别当前的 ht
  • python ssh 密码提示

    我试图在使用 ssh 时根据提示自动传递密码 通常 rsa 密钥用于防止密码提示 但我不能保证每个用户都正确设置 因此我希望脚本在用户给出密码时自动设置密码 这里是 ssh subprocess Popen ssh localhost py
  • 使用 xPath 修改 XML 文件

    我想使用 xPath 修改现有的 XML 文件 如果该节点不存在 则应该创建它 如果需要 还可以创建它的父节点 一个例子
  • 当手机方向改变时,EditText如何保留其值而不是textview?

    Edittext 的特别之处在于它可以保留值 但不能保留 Textview 和其他一些小部件 我们必须为它们使用 onSavedInstance 方法 EditText 背后的魔力是什么 特别是它可以保留值 如果有人能告诉它内部是如何工作的
  • Rails:未定义的方法“paginations_per”

    我正在安装一个名为 Carrier 的 gemhttps github com stanislaw carrier blob master Gemfile https github com stanislaw carrier blob ma
  • 在自定义帖子类型中显示父分类

    我有一组自定义帖子类型的学校 位置顺序如下 London 1 Oxford Road 2 Cambridge Road Paris 1 Napoleon Road 2 Tower Road 如何更改以下内容以便输出位置父级而不是位置子级 b
  • 迭代 PySpark GroupedData

    假设原始数据如下 Competitor Region ProductA ProductB Comp1 A 10 15 Comp1 B 11 16 Comp1 C 11 15 Comp2 A 9 16 Comp2 B 12 14 Comp2