Python:pandas在一列中具有相同值的行的数据帧比较

时间:2018-02-01 21:02:42

标签: python pandas

我有一个类似于:

的数据框
id    name    num_1   num_2
1     A       12      14
1     A       15
2     B       10      9  
3     C       19      18
3     C       16

我想要的输出是:

id    name    num_1   num_2
1     A       12      14
1     A       15      

基本上我想要具有相同id的行,其中第二行的num_1大于第一行的num_2。数据框按id和num_1排序。可能有些ID我只有一行,应该从最终的数据帧中排除。我知道我可以遍历数据帧以获得我正在寻找的东西,但我想知道是否有更好的方法来做到这一点。我也尝试使用shif使它工作,但它给了我不正确的结果:

id    name    num_1   num_2
1     A       15
2     B       10      9  
3     C       19      18

由于

1 个答案:

答案 0 :(得分:1)

尝试将groupby与过滤器

一起使用
df.groupby('name').filter(
     lambda x: len(x) > 1 and x['num_1'].iloc[1] > x['num_2'].iloc[0])