删除重复的行,但保留其数据的并集

时间:2018-08-10 21:18:09

标签: python pandas pandas-groupby

我有一个像这样的数据框:

pd.DataFrame([
    [1, None, 'a'],
    [1, 3.3, None],
    [2, 1.7, 'c']
], columns=['unique_id', 'x', 'target'])

我想删除unique_id1的行之一,但取其值的并集。也就是说,我想产生这个:

pd.DataFrame([
    [1, 3.3, 'a'],
    [2, 1.7, 'c']
], columns=['unique_id', 'x', 'target'])

在熊猫中可以有效地做到这一点吗?

假定此数据帧有10k到100k行,也许有10%是我要消除的重复项。每个unique_id只有2或3个重复项。

编辑:当两行都有不同的条目时,就我而言,只取第一行就可以了。但我愿意接受解决方案,例如这两个值都收集在一个列表中。

2 个答案:

答案 0 :(得分:4)

这给出了示例的结果。它采用每个组中每一列的第一个非Nan值。

df.groupby("unique_id", as_index=False).first()

答案 1 :(得分:1)

使用groupbyfirst

df.groupby('unique_id').first()