熊猫-来自重复的行,使行不包含空值

时间:2019-07-03 21:40:57

标签: python pandas

我有以下数据框:

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()

有什么建议吗?

1 个答案:

答案 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