我有一个这样的数据框:
我想比较id每对的列。因此,在行0和之间1,在行2和3之间等等。换句话说,我想比较偶数行和奇数行,并保留相同的id行对。
id
0
1
2
3
我的理想输出是:
我尝试过,但是没有效果:
df = df[ df[::2]["id"] ==df[1::2]["id"] ]
您可以使用一种GroupBy.transform方法:
GroupBy.transform
# for each pair, is there only one kind of Id? out = df[df.groupby(np.arange(len(df))//2)['Id'].transform('nunique').eq(1)]
或者,更有效的是,使用底层的 numpy 数组:
# convert to numpy a = df['Id'].to_numpy() # are the odds equal to evens? out = df[np.repeat((a[::2]==a[1::2]), 2)]
输出:
Index Time Id 2 2 10:10:02 12 3 3 10:10:04 12 4 4 10:10:06 13 5 5 10:10:07 13 6 6 10:10:08 11 7 7 10:10:10 11