удаление повторяющихся строк панд и оставшихся значений из каждой строки отличных от нуля - PullRequest
0 голосов
/ 13 октября 2019

У меня есть этот df (в реальном случае у меня есть больше дублированных строк):

    xx    yy    zz   name
A  5      6      0    A
A  0      0     -1    A
C  6      7      5    C

Как я могу объединить 2 строки, эти индексы одинаковы и сохранить только значения, отличные от нуля среди них? Желаемый результат будет:

    xx    yy    zz   name
A  5      6     -1    A
C  6      7      5    C

Ответы [ 3 ]

2 голосов
/ 14 октября 2019

вы можете попробовать df.where и groupby first

df.where(df.ne(0)).groupby(level=0).first()

Out[161]:
    xx   yy   zz name
A  5.0  6.0 -1.0    A
C  6.0  7.0  5.0    C
1 голос
/ 14 октября 2019

Вы также можете использовать replace, bfill, query и duplicated:

df.replace(0, np.NaN).bfill().query('~index.duplicated()')

Выход

    xx   yy   zz name
A  5.0  6.0 -1.0    A
C  6.0  7.0  5.0    C
1 голос
/ 14 октября 2019

Try

df.replace({0: None}).groupby(df.index).max()

    xx  yy  zz  name
A   5   6   7   A
C   6   7   5   C

Сначала он заменяет 0 элементов на None, который игнорируется max в groupby.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...