熊猫按照特殊规则保留每第 n 行

问题描述 投票:0回答:1

例如,我想保留每第三行,但我必须保留可被 3 整除的数字(或类似的特殊规则)。当我看到一个可以被 3 整除的数字时,就会重新开始计数,这意味着我将从那里开始数到 3,除非我看到另一个可以被 3 整除的值。示例如下:

import pandas as pd
df = pd.DataFrame.from_dict({'x': [0, 1, 2, 3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 17, 20, 23]})
filtered = pd.DataFrame.from_dict({'x': [0, 3,  7,  9,  12,  17]}) # this is the desired dataframe
print (df, '\n\n--------------\n\n', filtered)

     x
0    0
1    1
2    2
3    3
4    4
5    5
6    7
7    8
8    9
9   11
10  12
11  13
12  14
13  17
14  20
15  23 

--------------

     x
0   0
1   3
2   7
3   9
4  12
5  17
python pandas dataframe subsampling
1个回答
1
投票

您可以使用自定义

groupby.cumcount

m1 = df['x'].mod(3).eq(0)

m2 = (df.groupby(m1.cumsum())
        .cumcount().mod(3).eq(0)
      )

out = df[m2]

输出:

     x
0    0
3    3
6    7
8    9
10  12
13  17
© www.soinside.com 2019 - 2024. All rights reserved.