首页 > 解决方案 > 尝试使用多个名称条目清理调查结果,一些答案为 NaN

问题描述

我正在尝试清理一些奇怪的调查数据,我在下面创建了一个示例:

test1 = ['sean','tom','dan','sean']
test2 = ['Y',np.nan,np.nan,np.nan]
test3 = [np.nan,'Y','N','N']

df = pd.DataFrame({'name':test1,'a':test2,'b':test3})

print(df)

   name    a    b
0  sean    Y  NaN
1   tom  NaN    Y
2   dan  NaN    N
3  sean  NaN    N

我希望将结果组合在一起,以便“sean”只出现一次(因此仅在名称列中具有唯一值),并且来自名称的两个条目的答案已被组合为:

   name    a    b
0  sean    Y    N
1   tom  NaN    Y
2   dan  NaN    N

谢谢 :)

标签: pythonpandasdataframe

解决方案


如果总是只有一个非缺失值或每组所有缺失值都可以使用GroupBy.first

df = df.groupby('name', as_index=False, sort=False).first()
print(df)
   name    a  b
0  sean    Y  N
1   tom  NaN  Y
2   dan  NaN  N

推荐阅读