所以说我有一个像这样的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做到这一点,但是如果有人能指出我正确的方向,我会非常感激
答案 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