我有一个DataFrame,其索引名为SubjectID
,列Visit
。主题具有多个访问次数以及Value1
和Value2
的整数值或N / A.我想要折叠具有相同SubjectID
和相同Visit
数字的行。
这是我的数据框:
SubjectID Visit Value1 Value2
B1 1 1.57 N/A
B1 1 N/A 1.75
B1 2 N/A 1.56
我希望它看起来像这样:
Subject ID Visit Value1 Value2
B1 1 1.57 1.75
B1 2 N/A 1.56
我尝试使用groupby()
来解决此问题,但我不确定如何将其考虑到Visit
列中的索引和值。
答案 0 :(得分:3)
您可以使用groupby.first
或groupby.last
获取组中每列的第一个/最后一个非空值。对于示例数据,两种方法的输出都相同:
df = df.groupby(['SubjectID', 'Visit']).first().reset_index()
结果输出:
SubjectID Visit Value1 Value2
0 B1 1 1.57 1.75
1 B1 2 NaN 1.56