【问题标题】:pandas - drop duplicate rows in a dataframe based on a column value [duplicate]pandas - 根据列值删除数据框中的重复行[重复]
【发布时间】:2021-12-06 02:20:58
【问题描述】:

我有一个这样的df:

>>> df1

        col_1   col_2    size_col  other_col
0        aaa     abc       4          zxc
1        aaa     abc       3          xcv
2        aaa     abc       1          cvb
3        bbb     bbc       7          vbn
4        bbb     bbc       3          bnm
5        ccc     cbc       1          asd
6        ddd     dbc       9          sdf
7        ccc     cbc       3          dfg
8        ccc     cbc       1          fgh

并且想要这样的 df:

>>> df2

        col_1   col_2    size_col  other_col
0        aaa     abc       4          zxc
3        bbb     bbc       7          vbn
6        ddd     dbc       9          sdf
7        ccc     cbc       3          dfg

说明:
我想全部删除 col_1col_2 具有相似值的位置,并保留所有重复字符串中“size_col”最大的行。因此,从上面的示例中,对于col_1col_2 具有aaaabc 的行,我需要保留size_col 具有最大价值的行。或者换句话说,我需要按col_1col_2 列进行分组,然后对于每个组,只保留other_col 对该组具有最大价值的行。

对于大约 500 万行和 7 列的 df,我如何有效地执行此操作?

【问题讨论】:

    标签: python python-3.x pandas data-manipulation


    【解决方案1】:

    用途:

    df1.loc[df1.groupby(['col_1', 'col_2'])['size_col'].idxmax()]
    

    【讨论】:

    • 剩下的就是速度计时;交给你 :grin:
    • @sammywemmy 哈哈!我也差点掉进drop_duplicate的陷阱:P
    • 我还有另一个数字列。我如何确保max() 部分实际上采用size_col 而不是其他东西?
    • @NaveenReddyMarthala - 检查欺骗。
    • @U12-Forward - 你能转换成 wiki 吗?
    猜你喜欢
    • 1970-01-01
    • 2016-05-05
    • 2019-05-29
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 2021-04-02
    相关资源
    最近更新 更多