删除一列中的重复项,在多个其他列中,将行值更改为该列的最大值?

时间:2016-11-03 19:05:09

标签: python pandas

我的数据框格式如下:

id  x1 x2 x3 
A   1  0  0
A   0  1  0
A   0  0  0
B   1  0  0
B   0  0  0 
B   0  0  1 

我想"压缩"这基于id中的重复值,将1保留在正确的列下,但保留在id的单行中。也就是说,数据框最后应该如下所示:

id  x1 x2 x3 
A   1  1  0
B   1  0  1

我的实际数据集是数百万行,可能有数千列。我可以通过按行分组并循环遍历列来完成此操作,但是想知道是否有更多Pythonic / Pandified /内存有效的方法。

我已经查看了关于保留列的最大值(或其他函数)的问题的答案,但这又回到了必须遍历所有列的问题。 (Here is one example.

谢谢!

1 个答案:

答案 0 :(得分:2)

这是在pandas中执行此操作的最简单,最有效的方法:

In [8]: df.groupby('id').max()
Out[8]: 
    x1  x2  x3
id            
A    1   1   0
B    1   0   1