我的数据框格式如下:
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.)
谢谢!
答案 0 :(得分:2)
这是在pandas中执行此操作的最简单,最有效的方法:
In [8]: df.groupby('id').max()
Out[8]:
x1 x2 x3
id
A 1 1 0
B 1 0 1