我有以下数据框:
df= pd.DataFrame ({'id': [1,1,2,3,3, 4], 'test': ['a', np.nan, 'b','w', 'd', np.nan]})
如您所见,“ id”列具有一些重复的值,而“ test”列具有不同的值。从重复的行,我只想保留没有空值的行。如果重复的行没有任何空值,我想保留它。
输出应如下所示:
id value
0 1 a
1 2 b
2 3 w
3 3 d
4 4 NaN
我尝试了此操作,但是它不起作用,因为它删除了id = 3的重复行。
df = df.groupby('id', as_index=False, sort=False)['value'].first()
有什么建议吗?
答案 0 :(得分:1)
获取示例数据:
dup_id = df['id'].duplicated(keep=False)
df[~(dup_id & df.test.isna())]
给出您想要的:
id test
0 1 a
2 2 b
3 3 w
4 3 d
5 4 NaN