python - 如何找到多列的最大连续数?

标签 python pandas pandas-groupby cumsum

我需要为多个列确定满足特定条件的最大数量的连续值。

如果我的 df 是:

A    B    C    D    E
26   24   21   23   24
26   23   22   15   23 
24   19   17   11   15     
27   22   28   24   24 
26   27   30   23   11 
26   26   29   27   29

我想知道每列出现超过 25 的数字的最大连续次数。所以输出将是:

A 3
B 2
C 3
D 1
E 1

使用下面的代码,我可以一次获得一列的结果;有没有办法像上面那样创建一个表而不是为每一列重复(我总共有超过 40 列)。

df.A.isnull().astype(int).groupby(df.A.notnull().astype(int).cumsum()).sum().max()

提前致谢。

最佳答案

这是你想要的吗? pandas 方法(PS:从没想过我可以把它写成一行 LOL)

(df>25).apply(lambda x :x.groupby(x.diff().ne(0).cumsum()).cumcount()+1).mask(df<25).max()
Out[320]: 
A    3.0
B    2.0
C    3.0
D    1.0
E    1.0
dtype: float64

关于python - 如何找到多列的最大连续数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46737323/

相关文章:

python - 在 Google Identity Toolkit 中实现重置密码和电子邮件更改

Python pptx - 单元格中具有不同颜色的部分文本

python - Levenberg-Marquardt 优化算法的 keras 实现作为自定义优化器

pandas - 如何在 Pandas 中将多个日期列合并为一个?

python - 在python中合并具有不同时间频率的系列/数据帧

python - 在对分组对象执行操作并相应地创建变量后索引数据框

python - Pandas:用于条目的优先级消除重复值

python - 当周数超过一年时如何使用 Pandas groupby week

python - bool 列上的条件 DataFrame 过滤器?

python - 如何对数据帧进行切片并将其重新组装成新的数据帧