我想删除相对于列的重复行,并根据特定条件重新排列数据框中的数据。例如,我有以下数据框:
FROM CONT ID1 ID2 ID3 ID4 ID5 ID6 ID7
63309 89 101.3 NA NA NA NA NA NA
63309 89 NA 102.3 NA NA NA NA NA
63309 89 NA NA NA 104 NA NA NA
63309 90 NA NA 103 105.0 NA NA NA
63309 89 NA NA NA NA NA 107.1 NA
63310 92 NA 105.1 105.3 789.1 104 NA NA
63310 92 109 NA NA NA NA NA NA
63311 94 104 109 890 NA NA NA 107
63309 89 NA NA NA NA 109 NA 111
最后我的结果是这样的。
FROM CONT ID1 ID2 ID3 ID4 ID5 ID6 ID7
63309 89 101.3 102.3 NA 104.0 109.0 107.1 111.0
63309 90 NA NA 103.0 105.0 NA NA NA
63310 92 109.0 105.1 105.3 789.1 104.0 NA NA
63311 94 104.0 109.0 890.0 NA NA NA 107.0
数据必须分组在' FROM'基于' CONT'的列如上所示的列和基于此的重新排列。我尝试在熊猫中使用groupby,但它没有给我所需的输出。它删除了“' CONT'
之后的列中的数据。”答案 0 :(得分:2)
>>> df.groupby(['FROM', 'CONT']).sum()
ID1 ID2 ID3 ID4 ID5 ID6 ID7
FROM CONT
63309 89 101.3 102.3 NaN 104.0 109 107.1 111
90 NaN NaN 103.0 105.0 NaN NaN NaN
63310 92 109.0 105.1 105.3 789.1 104 NaN NaN
63311 94 104.0 109.0 890.0 NaN NaN NaN 107
如果您不希望索引数据:
>>> df.groupby(['FROM', 'CONT'], as_index=False).sum()
FROM CONT ID1 ID2 ID3 ID4 ID5 ID6 ID7
0 63309 89 101.3 102.3 NaN 104.0 109 107.1 111
1 63309 90 NaN NaN 103.0 105.0 NaN NaN NaN
2 63310 92 109.0 105.1 105.3 789.1 104 NaN NaN
3 63311 94 104.0 109.0 890.0 NaN NaN NaN 107