熊猫保持每一组行

时间:2017-07-18 20:04:01

标签: python pandas dataframe

所以说我有一个像这样的pandas数据框:

    0   1   2
0   1   2   3
1   4   5   6
2   7   8   9
3  10  11  12
4  13  14  15
5  16  17  18

我想保留每两组的其他组,即最终结果如下:

    0   1   2
0   1   2   3
1   4   5   6
4  13  14  15
5  16  17  18

我知道如何使用df.iloc [:: 2]获取交替的行,但这给了我:

    0   1   2
0   1   2   3
2   7   8   9
4  13  14  15

如果有人能指出我在这里正确的方向,不确定是否可以用iloc做到这一点,但是如果有人能指出我正确的方向,我会非常感激

2 个答案:

答案 0 :(得分:6)

有很多方法可以做到这一点 - 需要注意的是,在4的重复模式中你需要前两个,或者:

In [18]: df.loc[np.arange(len(df)) % 4 < 2]
Out[18]: 
    0   1   2
0   1   2   3
1   4   5   6
4  13  14  15
5  16  17  18

,因为

In [19]: np.arange(len(df))
Out[19]: array([0, 1, 2, 3, 4, 5])

In [20]: np.arange(len(df)) % 4
Out[20]: array([0, 1, 2, 3, 0, 1])

In [21]: np.arange(len(df)) % 4 < 2
Out[21]: array([ True,  True, False, False,  True,  True], dtype=bool)

答案 1 :(得分:4)

让我们使用一点数学和布尔索引:

df[(df.index // 2 % 2) == 0]

输出:

    0   1   2
0   1   2   3
1   4   5   6
4  13  14  15
5  16  17  18