python - 我们如何提取数据框中具有顺序值的行?

我只想选择具有三个或更多连续值的行。

num1 num2 num3 num4 num5 num6 1 2 3 4 5 6 3 7 8 9 10 11 9 13 21 22 23 24 5 8 11 17 21 24 表>

[结果]

num1 num2 num3 num4 num5 num6 1 2 3 4 5 6 3 7 8 9 10 11 9 13 21 22 23 24 表>

有没有使用 pandas 或 numpy 的简单方法?

最佳答案

IIUC,计算一个 diff在列上,选择等于 1 的值(即连续值)(使用 eq )并确定是否有任何 3 个连续值使用 rolling.sum .使用生成的 Series 执行 boolean indexing :

N=3
df[df.diff(axis=1).eq(1).T.rolling(window=N).sum().ge(N).any()]

输出:

   num1  num2  num3  num4  num5  num6
0     1     2     3     4     5     6
1     3     7     8     9    10    11
2     9    13    21    22    23    24

连续值的中间计数:

>>> df.diff(axis=1).eq(1).T.rolling(window=3).sum()

        0    1    2    3
num1  NaN  NaN  NaN  NaN
num2  NaN  NaN  NaN  NaN
num3  2.0  1.0  0.0  0.0
num4  3.0  2.0  1.0  0.0
num5  3.0  3.0  2.0  0.0
num6  3.0  3.0  3.0  0.0
之前的错误答案(此问答中的每个人都很常见)

这只是计算连续值的数量,而不是它们是否都是连续的。例如 1-2-4-5-7-8 会算作连续 3 个,但它们并不都是连续的 *

N = 3
df1 = df[df.diff(axis=1).eq(1).sum(axis=1).ge(N)]

https://stackoverflow.com/questions/71583732/

相关文章:

python - 两个日期时间之间的 15 分钟间隔数

linux - 使用打印命令选择子域

awk - 如果模式存在于另一列中,则从该列中移除模式

swift - 如何快速制作圆形或填充和圆形进度 View (使用 CAShapeLayers)

r - 与另一列中的变量相比,如何找到 R 列中两两变量之间的共同变量数?

python - 极地 : switching between dtypes within a Da

c++ - 键入 “$” 命令不会跳转到行尾 [光标设置为 “|”(条形/管道)而不是 block

python - 理解 python 的 len() 时间复杂度

c++ - const char * 数组中的元素数

r - 根据 R 中的出生年份对人员进行分组