删除重复的熊猫行,并保持每行的值不为零

时间:2019-10-13 20:59:39

标签: pandas

我有这个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 个答案:

答案 0 :(得分:2)

您可以尝试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 :(得分:1)

尝试

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

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

它首先用None替换0个元素,而max中的groupby则将其忽略。

答案 2 :(得分:1)

您还可以使用replacebfillqueryduplicated

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