我的DataFrame分是这样的:

index B
0     1
1     2
2     5
3     6
4     7
5     10

并且我需要合并差值小于或等于2的行, Select 具有较小值的行,并设置计数合并

结果应该是这样的:

index B count
0     1   2
1     5   3
2     10  1

如何用Pandas 来解决这个问题呢?

推荐答案

非常相似的to @AndrejKesely,只是语法更短,使用named aggregations:

df.groupby(df["B"].diff().gt(2).cumsum(), 
           as_index=False).agg(B=("B", "first"), 
                               count=("B", "count"))

输出:

    B  count
0   1      2
1   5      3
2  10      1

Python相关问答推荐

计算每月过go x年的平均值

如何将uint 16表示为float 16

键盘.任务组

Flask主机持续 bootstrap 本地IP| Python

Python如何让代码在一个程序中工作而不在其他程序中工作

Polars -转换为PL后无法计算熵.列表

Twilio:CallInstance对象没有来自_的属性'

如何使用Jinja语法在HTML中重定向期间传递变量?

将DF中的名称与另一DF拆分并匹配并返回匹配的公司

使用FASTCGI在IIS上运行Django频道

沿着数组中的轴计算真实条目

在线条上绘制表面

Python虚拟环境的轻量级使用

优化器的运行顺序影响PyTorch中的预测

我想一列Panadas的Rashrame,这是一个URL,我保存为CSV,可以直接点击

如何根据一列的值有条件地 Select 前N个组,然后按两列分组?

解决调用嵌入式函数的XSLT中表达式的语法移位/归约冲突

将scipy. sparse矩阵直接保存为常规txt文件

计算空值

Python日志(log)模块如何在将消息发送到父日志(log)记录器之前向消息添加类实例变量