我有一个像这样的数据框:
pd.DataFrame([
[1, None, 'a'],
[1, 3.3, None],
[2, 1.7, 'c']
], columns=['unique_id', 'x', 'target'])
我想删除unique_id
为1
的行之一,但取其值的并集。也就是说,我想产生这个:
pd.DataFrame([
[1, 3.3, 'a'],
[2, 1.7, 'c']
], columns=['unique_id', 'x', 'target'])
在熊猫中可以有效地做到这一点吗?
假定此数据帧有10k到100k行,也许有10%是我要消除的重复项。每个unique_id
只有2或3个重复项。
编辑:当两行都有不同的条目时,就我而言,只取第一行就可以了。但我愿意接受解决方案,例如这两个值都收集在一个列表中。
答案 0 :(得分:4)
这给出了示例的结果。它采用每个组中每一列的第一个非Nan值。
df.groupby("unique_id", as_index=False).first()
答案 1 :(得分:1)
使用groupby
和first
:
df.groupby('unique_id').first()