Polars 将 array[string] 列聚合到 set[str] 中

2023-12-14

我有极地数据框:

df = pl.DataFrame({
    'col1': [["aaa", "aaa"], ["bbb", "ccc"], ["ccc", "ddd", "ddd"], ["ddd", "ddd", "ddd"]],
    'col2': ["a", "a", "a", "a"],
    'col3': ["x", "x", "y", "y"]
})

我想将 col2、col3 分组并将 col1 聚合到 Set[String] 中

(df
.groupby(["col2", "col3"])
.agg([pl.col("col1").flatten().apply(set).alias("result")])
)

当我在 1700 万条记录上运行它时,它的执行速度非常慢。 10分钟后它仍然没有完成。

如何加快速度?

EDIT:

这就是我解决它的方法,而且速度非常快:

df = (
    df
    .with_columns([
        pl.col("col1").arr.join(",")
    ])
    .groupby(["col2", "col3"])
    .agg([
        pl.col("col1").alias("col1")
    ])
    .with_columns([
        pl.col("col1").arr.join(",")
    ])
    .with_columns([
        pl.col("col1").str.split(",").arr.unique().alias("col1")
    ])
)

┌──────┬──────┬───────────────────────┐
│ col2 ┆ col3 ┆ col1                  │
│ ---  ┆ ---  ┆ ---                   │
│ str  ┆ str  ┆ list[str]             │
╞══════╪══════╪═══════════════════════╡
│ a    ┆ x    ┆ ["aaa", "bbb", "ccc"] │
│ a    ┆ y    ┆ ["ccc", "ddd"]        │
└──────┴──────┴───────────────────────┘

这是我提出的最终解决方案:它使用 Polars 本机函数并且速度非常快。

预处理:将 array[str] 列连接到带有分隔符的字符串中 >> 将字符串列聚合到 array[string] >> 后处理:首先重复将 array[str] 列连接到带有分隔符的字符串中,然后在分隔符上拆分字符串并获取唯一值。

df = (
       df
       .with_columns([
           pl.col("col1").arr.join(",")
       ])
       .groupby(["col2", "col3"])
       .agg([
           pl.col("col1").alias("col1")
       ])
       .with_columns([
            pl.col("col1").arr.join(",")
       ])
       .with_columns([
           pl.col("col1").str.split(",").arr.unique().alias("col1")
       ])
   )
    

这是输出:

┌──────┬──────┬───────────────────────┐
│ col2 ┆ col3 ┆ col1                  │
│ ---  ┆ ---  ┆ ---                   │
│ str  ┆ str  ┆ list[str]             │
╞══════╪══════╪═══════════════════════╡
│ a    ┆ x    ┆ ["aaa", "bbb", "ccc"] │
│ a    ┆ y    ┆ ["ccc", "ddd"]        │
└──────┴──────┴───────────────────────┘
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Polars 将 array[string] 列聚合到 set[str] 中 的相关文章

  • 如何使用 Python 3 绕过 HTTP Error 403: Forbidden with urllib.request

    您好 不是每次都这样 但有时在尝试访问 LSE 代码时 我会收到每一个烦人的 HTTP 错误 403 禁止消息 任何人都知道我如何仅使用标准 python 模块来克服这个问题 遗憾的是没有漂亮的汤 import urllib request
  • 从文本文件中删除特定字符

    我对 Python 和编码都很陌生 我当时正在做一个小项目 但遇到了一个问题 44 1 6 23 2 7 49 2 3 53 2 1 68 1 6 71 2 7 我只需要从每行中删除第三个和第六个字符 或者更具体地说 从整个文件中删除 字符
  • 多处理中的动态池大小?

    有没有办法动态调整multiprocessing Pool尺寸 我正在编写一个简单的服务器进程 它会产生工作人员来处理新任务 使用multiprocessing Process对于这种情况可能更适合 因为工作人员的数量不应该是固定的 但我需
  • 将 numpy 数组合并为单个 int

    numpy 数组怎么可以这样 10 22 37 45 转换为单个 int32 数字 如下所示 10223745 这可以工作 gt gt gt int join map str 10 22 37 45 10223745 基本上你使用map s
  • 是否可以从 Julia 调用 Python 函数并返回其结果?

    我正在使用 Python 从网络上抓取数据 我想使用这些数据在 Julia 中运行计算 是否可以在 Julia 中调用该函数并返回其结果 或者我最好直接导出到 CSV 并以这种方式加载数据 绝对地 看PyCall jl https gith
  • 使用 Django 将文件异步上传到 Amazon S3

    我使用此文件存储引擎在上传文件时将文件存储到 Amazon S3 http code welldev org django storages wiki Home http code welldev org django storages w
  • Arcpy 模数在 Pycharm 中不显示

    如何将 Arcpy 集成到 Pycharm 中 我尝试通过导入模块但它没有显示 我确实知道该模块仅适用于 2 x python arcpy 在 PyPi Python 包索引 上不可用 因此无法通过 pip 安装 要使用 arcpy 您需要
  • Python Anaconda:如何测试更新的库是否与我现有的代码兼容?

    我在 Windows 7 机器上使用 Python 2 7 Anaconda 安装进行数据分析和科学计算 当新的库发布时 例如新版本的 pandas patsy 等 您建议我如何测试新版本与现有代码的兼容性 是否可以在同一台机器上安装两个
  • 运行 Python 单元测试,以便成功时不打印任何内容,失败时仅打印 AssertionError()

    我有一个标准单元测试格式的测试模块 class my test unittest TestCase def test 1 self tests def test 2 self tests etc 我的公司有一个专有的测试工具 它将作为命令行
  • Spark 和 Python 使用自定义文件格式/生成器作为 RDD 的输入

    我想问一下 Spark 中输入的可能性 我可以看到从http spark apache org docs latest programming guide html http spark apache org docs latest pro
  • Ubuntu systemd 自定义服务因 python 脚本而失败

    希望获得有关 Ubuntu 中的 systemd 守护进程服务的一些帮助 我写了一个 python 脚本来禁用 Dell XPS 上的触摸屏 这更像是一个问题 而不是一个有用的功能 该脚本可以工作 但我不想一直启动它 这就是为什么我想到编写
  • Airflow 1.9 - 无法将日志写入 s3

    我在 aws 的 kubernetes 中运行气流 1 9 我希望将日志发送到 s3 因为气流容器本身的寿命并不长 我已经阅读了描述该过程的各种线程和文档 但我仍然无法让它工作 首先是一个测试 向我证明 s3 配置和权限是有效的 这是在我们
  • 为什么 __dict__ 和 __weakref__ 类从未在 Python 中重新定义?

    类创建似乎从来没有re 定义 dict and weakref class属性 即 如果它们已经存在于超类的字典中 则它们不会添加到其子类的字典中 但始终re 定义 doc and module class属性 为什么 gt gt gt c
  • Python bug - 或者我的愚蠢 - 扫描字符串文字时 EOL

    我看不出以下两行之间有显着差异 然而第一个解析 而后者则不解析 In 5 n Axis of Awesome In 6 n Axis of Awesome File
  • 检测是否从psycopg2游标获取?

    假设我执行以下命令 insert into hello username values me 我跑起来就像 cursor fetchall 我收到以下错误 psycopg2 ProgrammingError no results to fe
  • 如何将带有参数的Python装饰器实现为类?

    我正在尝试实现一个接受一些参数的装饰器 通常带有参数的装饰器被实现为双重嵌套闭包 如下所示 def mydecorator param1 param2 do something with params def wrapper fn def
  • Django 管理器链接

    我想知道是否有可能 如果可以的话 如何 将多个管理器链接在一起以生成受两个单独管理器影响的查询集 我将解释我正在研究的具体示例 我有多个抽象模型类 用于为其他模型提供小型的特定功能 其中两个模型是DeleteMixin 和GlobalMix
  • 如何从namedtuple实例列表创建pandas DataFrame(带有索引或多索引)?

    简单的例子 from collections import namedtuple import pandas Price namedtuple Price ticker date price a Price GE 2010 01 01 30
  • 将 Keras 集成到 SKLearn 管道?

    我有一个 sklearn 管道 对异构数据类型 布尔 分类 数字 文本 执行特征工程 并想尝试使用神经网络作为我的学习算法来拟合模型 我遇到了输入数据形状的一些问题 我想知道我想做的事情是否可能 或者我是否应该尝试不同的方法 我尝试了几种不
  • 无法安装最新版本的 Numpy (1.22.3)

    我正在尝试安装最新版本的 numpy 即 1 22 3 但看起来 pip 无法找到最后一个版本 我知道我可以从源代码本地安装它 但我想了解为什么我无法使用 pip 安装它 PS 我有最新版本的pip 22 0 4 ERROR Could n

随机推荐

  • 多处理池和生成器

    首先看下面的代码 pool multiprocessing Pool processes N batch for item in generator batch append item if len batch 10 pool apply
  • 用于 SEO 的“h1”中的“p”标签[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 会使用 p 嵌套在 a 中的标签 p h1 标签对 SEO 不利吗 h1 p Some title p p Some subtitle p h1 这将使我的生活变得更轻松 处理动态页
  • 如何在 React Native 中运行后台任务?

    我已经建立了一个iOS 小应用程序在 React Native 中进行位置跟踪 定期将纬度 经度发送到用户选择的服务器 然而 这仅在应用程序位于前台时才有效 当用户在其他应用程序中时 如何在后台运行此任务 不幸的是 目前不支持任何类型的后台
  • 日期与日期时间

    我正在开发一个需要返回事件日期的程序 我正在寻找一个Date not a DateTime 是否有一种只返回日期的数据类型 不 没有 DateTime表示由日期和时间组成的某个时间点 但是 您可以通过以下方式检索日期部分Date财产 这是另
  • 如何将多种类型的用户重定向到各自的 Activity?

    我正在 Firebase 上创建一个投票应用程序 我有 3 种类型的用户 到目前为止 我可以在两种用户 学生 教师 使用以下代码登录后成功将他们重定向到各自的活动 到目前为止我的用户但现在我必须添加另一个用户 ADMIN 并且像其他用户一样
  • NHibernate 加载实体以及子集合的一部分

    有没有办法通过子集合上的子句来加载 NHibernate 实体 我有一个场景 我在 操作 中记录更改 即一个操作可以包含对多个实体的更改 当我想要加载特定实体的日志时 我会加载对该实体所做的任何更改的所有操作 加载这些操作会导致加载所有更改
  • Scala 这种别名和自我类型

    之间有什么关系吗this aliasing and self type Is this aliasing的一个特例self type 在scala 2nd P776编程中 作者说 抽象类 Parser T 扩展 p gt 你在第 29 4
  • PHP 闭包对象是否符合垃圾回收条件

    我想知道是否有人知道 PHP 的匿名函数是否符合垃圾回收条件 我知道用创建的函数create function没有被垃圾收集 但我找不到任何关于使用创建的内容的参考function 语法 内部表示为 Closure 对象 PHP 垃圾收集器
  • Android Studio:使用 Mac (OSX) 和 Windows 的同一项目的 SDK 位置发生变化

    我正在开发一个 Android Studio 项目 我的团队成员使用 Windows 我使用 OSX 问题是 当我从 git 提取新代码然后打开项目时 我会根据 Mac 的 SDK 位置得到各种更改 First a notice when
  • Android NDK 和更新的 API 支持

    我正在开发一个大量使用 NDK 的 Android 应用程序 在 Java 方面 我们的目标是 SDK 19 最小 SDK 为 16 有没有办法在 NDK 方面做类似的事情 现在我们的Application mk文件有APP PLATFOR
  • Android 如何将标题布局重用为 ListView 中的空视图

    在我的项目的整个生命周期中 我一直在努力解决这个问题 我的项目中有很多列表 其中大多数都有标题 我一直在制作一个单独的布局文件并使用 addHeaderView 将其添加到列表中 问题是当数据 ArrayList 在我的例子中 为空时 标题
  • Java 有没有办法将整数转换为其序数名称?

    我想取一个整数并得到它的序数 即 1 gt First 2 gt Second 3 gt Third 如果你同意1st 2nd 3rd等等 这里有一些简单的代码可以正确处理任何整数 public static String ordinal
  • Msbuild 和 SVN 更新

    我想编写一个简单的任务 它将更新并将夜间构建的源代码提交到 SVN 我在 msbuildtasks tigris org 页面上 下载了 dll 但我不知道如何编写它 您能提供一些基本样本吗 下面是一个示例 取自 MSBuild 社区任务构
  • c# 在运行时创建未知的泛型类型

    因此 我有一个泛型类 它可能需要在其自己的方法内使用不同类型的泛型创建自身的实例 其类型是通过反射获得的 这很重要 因为这个存储库映射T到数据库表 这是我正在写的 ORMish 并且如果代表的类T有一个代表另一个表的集合 我需要能够实例化它
  • 如何关闭所有弹出窗口?

    我有多个 444 popups打开我的map 我试过这个 leaflet popup close button each function index leaflet popup close button index click 但这样一来
  • 如何在Python字典中为一个键拥有多个值?

    我遇到的情况是 同一个键可能有不同的与之关联的字符串 例如flow 和 Wolf 都有相同的字符 如果我对它们进行排序并将它们用作字典中的键 我想将原始字符串作为值 我在 python 字典中尝试过 d d flow flow d flow
  • 为什么 hibernate 在 session.get 方法中强制序列化

    我看到 hibernate 的 session get 和 load 方法只接受可序列化的对象 根据我对hibernate的理解 它会生成一条SQL语句并将其发送到DBMS 它永远不需要通过网络发送 java 对象 为什么 hibernat
  • 如何像 iOS 7 iPad App Store 那样同时翻转和放大 UIView?

    当您点击应用程序图标时 iPad iOS 7 App Store 有一个非常酷的动画 当图标较小时 来自特色列表 而不是搜索结果 这是它的实际操作图片 基本上 图标会同时翻转并扩大尺寸 后面有渐变 内容视图更小 到目前为止 我有一个自定义的
  • 如何在运行时更改JTabbedPane的背景颜色?

    我发现了很多改变背景颜色的例子JTabbedPane使用任一setBackgroundAt and UIManager put JTabbedPane 但是 我想创建一个onclick复选框上的事件 当您选择它时 背景颜色将更改为绿色 当您
  • Polars 将 array[string] 列聚合到 set[str] 中

    我有极地数据框 df pl DataFrame col1 aaa aaa bbb ccc ccc ddd ddd ddd ddd ddd col2 a a a a col3 x x y y 我想将 col2 col3 分组并将 col1 聚