【问题标题】:Remove duplicates in one column, in multiple other columns, change row value to max of that column?删除一列中的重复项,在多个其他列中,将行值更改为该列的最大值?
【发布时间】:2016-11-04 03:07:47
【问题描述】:

我有一个格式如下的数据框:

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/memory 有效的方式来做到这一点。

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

谢谢!

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    这是在 pandas 中最简单、最有效的方法:

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

    【讨论】:

    • 当吉特。好吧,现在我只是觉得自己很愚蠢。
    猜你喜欢
    • 2021-09-08
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 2021-12-29
    • 2023-01-11
    相关资源
    最近更新 更多