2016-09-22 138 views
2

我有一个DataFrame,其索引名为SubjectID,列Visit。对于Value1Value2,主题有多个访问和一个整数值或一个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列中的索引和值。

回答

3

您可以使用groupby.firstgroupby.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 
+0

太感谢你了,这真是棒极了 – MScar

相关问题