gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 08:24:49 26 4
gpt4 key购买 nike

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

<表类="s-表"><头>num1num2num3num4num5num6<正文>12345637891011913212223245811172124

[结果]

<表类="s-表"><头>num1num2num3num4num5num6<正文>1234563789101191321222324

有没有使用 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)]

关于python - 我们如何提取数据框中具有顺序值的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71583732/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com