2017-03-01 46 views
3

我有一个问题,我希望有一个相对简单的解决方案。我有一个数据帧,每个唯一联系人有多个记录(请参阅下面的“名称”)。我正在尝试将名称分组,并将它们丢失的位置汇总起来。熊猫 - 滚动行以填补缺失的数据

name id   email 
0 bob 5.0    NaN 
1 bob NaN  [email protected] 
2 bill 3.0    NaN 
3 bill NaN [email protected] 

预期结果将是:

name id   email 
0 bob 5.0  [email protected] 
1 bill 3.0  [email protected] 

我试着旋转和重新旋转几种不同的方法都无济于事。有什么办法可以做到这一点?

回答

5

您可以尝试groupby.first()

df.groupby('name')[['id', 'email']].first() 

#  id   email 
#name  
#bill 3.0 [email protected] 
#bob 5.0 [email protected] 

同时检查source code(根据其需要的第一个非空值),在这里,如果你有兴趣。

+3

df.groupby('name',as_index = False).first() – Boud

+0

@Boud这种简单性使得我所尝试的看起来很愚蠢。 – miradulo

+0

@米奇赫赫,我已经通过bfill ffill组合也在过去(是的,我可以在你的脑海里读到) – Boud