Pandas - 按连续范围分组

2023-11-27

我有一个具有以下结构的数据框 - 开始、结束和高度。

数据框的一些属性:

  • 数据帧中的一行始终从上一行结束的位置开始,即如果第 n 行的结尾是 100,则第 n+1 行的开头是 101。
  • 第 n+1 行的高度始终与第 n+1 行的高度不同(这就是数据位于不同行的原因)。

我想对数据帧进行分组,将高度分组到 5 个长的桶中,即桶是0、1-5、6-10、11-15 和 >15.

请参阅下面的代码示例,其中我正在寻找的是实现按桶分组功能。

我尝试查看其他问题,但无法得到我正在寻找的确切答案。

提前致谢!

>>> d = pd.DataFrame([[1,3,5], [4,10,7], [11,17,6], [18,26, 12], [27,30, 15], [31,40,6], [41, 42, 7]], columns=['start','end', 'height'])
>>> d
   start  end  height
0      1    3       8
1      4   10       7
2     11   17       6
3     18   26      12
4     27   30      15
5     31   40       6
6     41   42       7
>>> d_gb = group_by_bucket(d)
>>> d_gb
   start  end height_grouped
0      1   17           6_10
1     18   30          11_15
2     31   42           6_10

一种方法:

df = pd.DataFrame([[1,3,10], [4,10,7], [11,17,6], [18,26, 12],
[27,30, 15], [31,40,6], [41, 42, 6]], columns=['start','end', 'height'])

Use cut分组:

df['groups']=pd.cut(df.height,[-1,0,5,10,15,1000])

找到断点:

df['categories']=(df.groups!=df.groups.shift()).cumsum()

Then df is :

"""
   start  end  height    groups  categories
0      1    3      10   (5, 10]           0
1      4   10       7   (5, 10]           0
2     11   17       6   (5, 10]           0
3     18   26      12  (10, 15]           1
4     27   30      15  (10, 15]           1
5     31   40       6   (5, 10]           2
6     41   42       6   (5, 10]           2
"""

定义有趣的数据:

f = {'start':['first'],'end':['last'], 'groups':['first']}

并使用groupby.agg功能 :

df.groupby('categories').agg(f)
"""
              groups  end start
               first last first
categories                     
0            (5, 10]   17     1
1           (10, 15]   30    18
2            (5, 10]   42    31
"""
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas - 按连续范围分组 的相关文章

随机推荐

  • 每个 CPU 架构的真正 ELF TLS ABI 要求是什么?

    乌尔里希 德雷珀的论文on thread local storage 概述了几种不同 cpu 架构的 TLS ABI 但我发现它不足以作为实现 TLS 的基础 原因有两个 它省略了许多重要的体系结构 如 ARM MIPS 等 同时包括一堆完
  • 模板参数推导和 cons 限定

    谁能解释一下为什么代码不能编译 template
  • 如何将字符串与 chrono::milliseconds 连接起来?

    我需要一个带有时间戳 以毫秒为单位 的字符串 我通过这种方式得到了毫秒 在 stackoverflow 上查找之后 milliseconds ms duration cast lt milliseconds gt system clock
  • 如何检查模板参数的类型?

    假设我有一个模板函数和两个类 class animal class person template
  • 使用本机库进行 Surefire JUnit 测试

    我们在 Hudson 中使用 Maven 来运行 Java 构建过程 并使用 Surefire 插件来执行 JUnit 测试 但是我在一个需要本机 dll 的项目的单元测试中遇到了问题 我们看到的错误是 测试错误 TestFormRegis
  • 将脚本插入多个 Google 电子表格

    我是一名业余程序员 我实际上只做了一些事情来让我的生活更轻松 我设置了 Google 表单和电子表格来跟踪学校不同年级的纪律问题 我编写了一个简短的脚本 通过电子邮件通知适当的人员任何提交 并且可以过滤和创建有关选定学习者的报告 因为我做D
  • 使用 Perl 查找文件

    File Find and the wanted 子程序 这个问题比原来的标题 子例程的原型和前向声明 要简单得多 我希望答案 无论多么简单 都能帮助我理解子例程 函数 原型和范围以及File Find module 使用 Perl 子例程
  • Python 将元组转换为整数

    有没有可以将元组转换为整数的函数 Example input 1 3 7 output 137 gt gt gt reduce lambda rst d rst 10 d 1 2 3 123
  • CS8019 临时文件 MSBuild 服务器上的 Assemblyinfo 错误

    我的构建服务器上出现代码分析错误 错误是 NETFramework 版本 v4 6 AssemblyAttributes cs 3 1 错误CS8019 不必要的using指令 它位于 Visual Studio 创建的临时文件中 在我的项
  • Send() 之后的 UdpClient、Receive() 不起作用?

    考虑以下代码 client Send data data Length endpoint byte response client Receive ref endpoint 然而 根据 WireShark 网络嗅探器 的说法 远程主机确实会
  • 键盘显示元素的位置混乱

    我有需要手机触摸键盘输入的游戏 它的显示有问题 每当键盘出现在文本输入焦点时 我的所有位置 绝对的元素都会变得混乱 是否有一个插件可以使移动键盘始终显示 以便我重新定位所有元素 或者我需要更改 css 来制作元素 以便键盘显示时不会混乱 我
  • 直接连接到 SQL Azure 时的登录前握手问题

    目前 我们的开发环境中遇到了一个相当麻烦的问题 并显示以下消息 A connection was successfully established with the server but then an error occurred dur
  • 使用 java 处理 Postgresql 事务

    我有两个带有preparedStatement 的查询块 这是第一个 String sql update cikan malzeme set miktar where proje id and malzeme id PreparedStat
  • 支持转储和加载的纯 Javascript YAML 库? [复制]

    这个问题在这里已经有答案了 这样的事情存在吗YAML aka YAML 如果这个曾经存在过 那么它一定已经被抹去了 因为最新的搜索结果一无所获 看起来有很多实现dump仅从 Javascript 到 YAML 输出 但很难找到支持转储和加载
  • serviceAccountKey 在哪里或者是什么。json 是 firebase 实时数据库的 Node js 示例

    我已经下载了 zipFirebase real time database node js sample并导航到数据库部分 https github com firebase quickstart nodejs tree master da
  • 如何从 URL 字符串中获取参数?

    我有一个 HTML 表单字段 POST url 有一些 URL 字符串作为值 示例值是 https example com test email protected https example com test email protecte
  • 在原始返回类型函数上返回“null”?

    我有一个函数返回一个int给定键的值 来自HashMap
  • 查找nohup命令运行的进程

    我使用以下命令在 Centos 中运行服务器可执行文件 nohup server 现在我需要终止该进程 server 但我尝试过 ps a 命令来获取PID但我无法获得该过程 知道如何杀死 server now ps auxwww grep
  • “R 无法解析为变量”? [复制]

    这个问题在这里已经有答案了 在 Eclipse 中 我从源创建了一个项目 现在它显示错误 R 无法解析为变量 从我在这里发现的情况来看 我已经清除并重建了项目 但 R 文件仍然没有出现在 gen 文件夹中 有任何想法吗 不用担心 首先 您可
  • Pandas - 按连续范围分组

    我有一个具有以下结构的数据框 开始 结束和高度 数据框的一些属性 数据帧中的一行始终从上一行结束的位置开始 即如果第 n 行的结尾是 100 则第 n 1 行的开头是 101 第 n 1 行的高度始终与第 n 1 行的高度不同 这就是数据位