【问题标题】:Python - remove row duplications by part of the row [duplicate]Python - 按行的一部分删除行重复[重复]
【发布时间】:2016-12-22 07:52:56
【问题描述】:

假设我有以下数组:

import numpy as np

data = np.array([[51001, 121, 1, 121212],
                 [51001, 121, 1, 125451],
                 [51001, 125, 1, 127653]]

我只想删除一行中前 3 个元素(前 3 列)的重复行。

所以我会得到的结果是:

print data
[[51001, 121, 1, 121212],
 [51001, 125, 1, 127653]]

只要我得到前 3 列的唯一性,我们保留哪一行和删除哪一行都没有关系

【问题讨论】:

  • 将前三列切片并使用链接的 dup Q&As。
  • 我可以切片,但我不知道如何维护第 4 列,也没有看到任何关于如何操作的答案
  • 从此answer post,编辑:sorted_idx = np.lexsort(data[:,:3].T)row_mask = np.append([True],np.any(np.diff(sorted_data[:,:3],axis=0),1))

标签: python pandas numpy


【解决方案1】:

这是在 pandas 中使用 drop_duplicates 的一种方法

In [179]: pd.DataFrame(data).drop_duplicates([0, 1, 2]).values
Out[179]:
array([[ 51001,    121,      1, 121212],
       [ 51001,    125,      1, 127653]])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-25
    • 2018-02-05
    • 2018-04-10
    • 2021-05-01
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 2019-09-20
    相关资源
    最近更新 更多