python-3.x - 当特定列值连续一定数量的行时如何获取行

标签 python-3.x pandas numpy pandas-groupby

当列 x 值在超过五个连续行中保持不变时,我想提取行。

     x  x2
0    5   5
1    4   5
2   10   6
3   10   5
4   10   6
5   10  78
6   10  89
7   10  78
8   10  98
9   10   8
10  10  56
11  60  45
12  10  65

Desired_output:

    x  x2
0  10   6
1  10   5
2  10   6
3  10  78
4  10  89
5  10  78
6  10  98
7  10   8
8  10  56

最佳答案

您可以使用.shift + .cumsum 识别列 x 值保持不变的连续行 block ,然后对这些 block 上的数据帧进行分组,并使用 count 进行转换识别 x 中具有超过 5 个连续相同值的组:

b = df['x'].ne(df['x'].shift()).cumsum()
df_out = df[df['x'].groupby(b).transform('count').gt(5)]

详细信息:

>>> b
0     1
1     2
2     3
3     3
4     3
5     3
6     3
7     3
8     3
9     3
10    3
11    4
12    5
Name: x, dtype: int64

>>> df_out
     x  x2
2   10   6
3   10   5
4   10   6
5   10  78
6   10  89
7   10  78
8   10  98
9   10   8
10  10  56

关于python-3.x - 当特定列值连续一定数量的行时如何获取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65976993/

相关文章:

python-3.x - 如何读取 csv 文件中的前 1000 个条目

python - 我将如何解压缩一个平面列表?

python - 将 DatetimeIndex 转换为日期时间

python - 在 matplotlib 中翻转绘图

python - 如何在图中表示 bool 数据

python-3.x - 使用 PyExifTool 将 exif 数据写入 exif header

python - 是否可以根据对单个 pandas DataFrame 列的查询跨行进行多次更新

python - 使用 pandas 将 CSV 列读取为分类变量

python - 在 MultiIndex 上使用 df.query 给出 UndefinedVariableError

python - 如何在Mac上通过anaconda安装openCV?