我有一个问题,我希望有一个相对简单的解决方案。我有一个数据帧,每个唯一的联系人有多个记录(见下面的“名称”)。我正在尝试GroupBy这个名字,并将值丢失的地方汇总。
name id email
0 bob 5.0 NaN
1 bob NaN test@foo.com
2 bill 3.0 NaN
3 bill NaN something@a.com
预期输出为:
name id email
0 bob 5.0 test@foo.com
1 bill 3.0 something@a.com
我尝试过透视和重新旋转几种不同的方法无济于事。有什么方法可以做到这一点吗?
答案 0 :(得分:5)
您可以尝试groupby.first()
:
df.groupby('name')[['id', 'email']].first()
# id email
#name
#bill 3.0 something@a.com
#bob 5.0 test@foo.com
如果您有兴趣,还可以在这里查看source code(根据第一个非空值)。