如何有效地迭代 Pandas 数据帧的连续块

2023-12-10

我有一个大数据框(几百万行)。

我希望能够对其进行 groupby 操作,但只是按行的任意连续(最好是大小相等)子集进行分组,而不是使用各个行的任何特定属性来决定它们进入哪个组。

用例:我想通过 IPython 中的并行映射将函数应用于每一行。哪些行进入哪个后端引擎并不重要,因为该函数一次基于一行计算结果。 (至少在概念上是这样;实际上它是矢量化的。)

我想出了这样的东西:

# Generate a number from 0-9 for each row, indicating which tenth of the DF it belongs to
max_idx = dataframe.index.max()
tenths = ((10 * dataframe.index) / (1 + max_idx)).astype(np.uint32)

# Use this value to perform a groupby, yielding 10 consecutive chunks
groups = [g[1] for g in dataframe.groupby(tenths)]

# Process chunks in parallel
results = dview.map_sync(my_function, groups)

但这看起来很冗长,并且不能保证大小相同的块。特别是当索引稀疏或非整数或其他情况时。

有更好的方法建议吗?

Thanks!


使用 numpy 的数组分割():

import numpy as np
import pandas as pd

data = pd.DataFrame(np.random.rand(10, 3))
for chunk in np.array_split(data, 5):
  assert len(chunk) == len(data) / 5, "This assert may fail for the last chunk if data lenght isn't divisible by 5"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何有效地迭代 Pandas 数据帧的连续块 的相关文章

随机推荐

  • 我可以使用 __init__.py 定义全局变量吗?

    我想定义一个在包的所有子模块中都可用的常量 我以为最好的地方是在 init py根包的文件 但我不知道该怎么做 假设我有几个子包 每个子包都有几个模块 如何从这些模块访问该变量 当然 如果这是完全错误的 并且有更好的选择 我想知道 你应该能
  • 将项目分配给具有功能的组

    我有一个问题 我要将变量分配给集合 每个集合都有可以分配给它的变量的限制 并且每个变量都可以分配给总集合的某个子集 Example a可以成套A or B b可以成套B c可以成套A or B d可以成套A 因此 我们可以有A a d B
  • HashMap 和 TreeMap 有什么区别? [复制]

    这个问题在这里已经有答案了 我开始学习Java 什么时候应该使用 HashMap 而不是 TreeMap TreeMap是一个例子SortedMap 这意味着键的顺序可以排序 并且在迭代键时 您可以期望它们是按顺序排列的 HashMap另一
  • 如何在本机反应中锁定 ios 中特定屏幕的方向?

    我想锁定相机屏幕的方向
  • SQL语句将记录插入到具有标识列的表中?

    我正在尝试将一行手动插入到我的 SQL Server 数据表中 该表有 5 列 1 个标识列和 4 个数据列 我在看这个帖子 但是当我运行所选答案的查询时 当然是用我的表名替换 GroupTable 之后 我的 SQL Server 200
  • 不正确的引用元素签名 XML C#

    我需要实现 EBICS 协议 特别是 HPB 请求 并且我需要签署我的 XML 文件
  • 对齐内容和对齐项目有什么区别?

    有什么区别align items and align content The align itemsFlex box 的属性沿着横轴对齐 Flex 容器内的项目 就像justify content沿着主轴线 对于默认的flex direct
  • JavaFX:如何在 GraphicsContext 上绘制路径?

    JavaFX 提供了两种低级路径绘制方法GraphicsContext和一个高水平的Path node 我想在类中存储形状并在其中绘制它们GraphicsContext The Path上课对我来说似乎很方便 我知道 它旨在用作场景图中的节
  • 用于检查某个字符连续出现 3 次或以上的正则表达式

    我想检查输入字符串以验证正确的文本 A 我希望用户允许编写字母数字字符 包括句点 逗号 连字符和圆括号 b 但是 我不希望用户同时输入 3 位或更多位数字 例如 允许 12 但不允许 185 C 我不希望用户输入 或 或 aaaaaaaaa
  • JavaScript window.find 绝对不起作用

    当我尝试传递分布在几个块元素中的文本时 window find 方法不起作用 HTML p search me p b I could be the answer b JavaScript window find meI could be
  • 多行 JLabels - Java [重复]

    这个问题在这里已经有答案了 I want JLabel文本采用多行格式 否则文本会太长 我们如何在 Java 中做到这一点 如果您不介意将标签文本包装在html标签 当容器的宽度太窄而无法容纳全部标签时 JLabel 会自动换行 例如 尝试
  • Javascript 淡入淡出图像

    我对 JavaScript 相当陌生 我需要一个非常简单的脚本来循环缓慢地淡入和淡出图像 任何帮助将非常感激 最简单的方法是使用 jQuery img src 文档 http api jquery com fadeIn 您还可以通过传递参数
  • 显示倒计时时间表单 jquery 会话超时

    我找到了https github com travishorn jquery sessionTimeout我想在我的项目中使用这个 jquery 会话超时 尽管它在后台看起来工作正常我想在文本中显示倒计时时间 如何显示计时器 或者除了这个之
  • Postfix 和 OpenJDK 11:“没有合适的协议(协议被禁用或密码套件不合适)”

    我知道这个主题还有一些其他问题 及其答案 但这些对我都没有帮助 我有一个Postfix服务器 后缀 3 4 14Debian 10 Buster 具有以下配置 仅有趣的部分 smtpd tls mandatory protocols SSL
  • 如何“解锁”RwLock?

    我正在尝试解决螺纹环问题 在每个线程中我读取令牌值 如果不是我的 检查是否是程序结束 如果是则完成线程 否则 请再次阅读并重复 如果是我的 即有我的 id 则获取写锁 增加令牌的值 检查是否结束 然后告诉主线程我完成了它并完成当前线程循环
  • matlab中以向量为索引的完整矩阵

    假设我们有一个矩阵 A1 和两个向量 v1 和 v2 如下所示 A1 zeros 5 5 v1 1 2 3 v2 5 5 4 有没有办法用v1和v2作为索引来逐一替换A1中的元素 即在 A1 1 5 A1 2 5 和 A1 3 4 中插入一
  • 如何自定义PostgreSQL官方Docker镜像的配置文件?

    我正在使用官方 Postgres Docker 镜像 尝试自定义其配置 为此 我使用命令sed改变max connections例如 sed i e s max connections 100 max connections 1000 va
  • 使用 ARC iPhone 在 XCode 4.2 中消失 UILocation 警报

    当应用程序在使用 ARC 的项目中启动时 警报会瞬间出现或不显示 不使用 ARC 也没关系 我添加 CoreLocation 框架并将其导入到项目中 My code import
  • 在 Windows 中使用 fopen 和 C 打开长文件名

    我在使用 fopen 打开路径长度超过 Windows 本机支持的 260 个字符的文件时遇到问题 我发现了前缀 我需要将其放在路径前面才能处理该文件 我的问题是 这与 fopen 结合仍然有效吗 我仍然无法打开文件 但我没有找到有关它的信
  • 如何有效地迭代 Pandas 数据帧的连续块

    我有一个大数据框 几百万行 我希望能够对其进行 groupby 操作 但只是按行的任意连续 最好是大小相等 子集进行分组 而不是使用各个行的任何特定属性来决定它们进入哪个组 用例 我想通过 IPython 中的并行映射将函数应用于每一行 哪