数据框根据列的特定条件删除行

时间:2019-07-05 16:24:51

标签: python pandas dataframe

这是df的一部分:

   NUMBER         MONEY
    12345           20
    12345          -20
    123456          10
    678910          7.6
    123457          3
    678910         -7.6

我要删除数字相同但钱相反的行。

理想的结果如下:

   NUMBER         MONEY

    123456          10

    123457          3

2 个答案:

答案 0 :(得分:1)

如果一个组中只有2行,请使用:

// utility function that returns a promise that resolves after a delay
function delay(t) {
    return new Promise(resolve => {
        setTimeout(resolve, t);
    });
}


for (let i = 0; i < 5; i++) {
    /* On for 1 second */
    rpio.write(12, rpio.HIGH);
    socket.emit('data','high')
    await delay(1000);

    /* Off for half a second (500ms) */
    rpio.write(12, rpio.LOW);
    socket.emit('data','low')
    await delay(500);
}

df[df.groupby('NUMBER').MONEY.transform('sum').ne(0)]

答案 1 :(得分:1)

尝试一下

>>> df[~df.assign(MONEY=df.MONEY.abs()).duplicated(keep=False)]

输出:

   NUMBER  MONEY
2  123456   10.0
4  123457    3.0

来自评论(通过@piRSquared):

通过使用assign,新列已添加到df,随后的drop_duplicates同时考虑了NUMBERMONEY的绝对值

df[~df.assign(MONEY=df.MONEY.abs()).duplicated(keep=False)]