【问题标题】:Deleting Chained Duplicates删除链式重复
【发布时间】:2015-09-10 07:56:08
【问题描述】:

假设我有一个列表:

lits = [1, 1, 1, 2, 0, 0, 0, 0, 3, 3, 1, 4, 5, 2, 2, 2, 0, 0, 0]

我需要这个变成[1, 1, 2, 0, 0, 3, 3, 1, 4, 5, 2, 2, 0, 0] (删除重复项,但仅在重复项链中。打算在一个巨大的 HDF5 文件上执行此操作,使用 pandas,numpy。宁愿不使用 for 循环遍历所有元素。

table = table.drop_duplicates(cols='[SPEED OVER GROUND  [kts]]', take_last=True)

我可以对此代码进行修改吗?

【问题讨论】:

  • 为什么输出中有[1, 1, ...。他们不是在一个链条中吗?这是否符合您的措辞?
  • 我认为(基于所需的输出)他更准确地说他最多想要一个副本。

标签: numpy pandas duplicates hdf5


【解决方案1】:

在 pandas 中,你可以做一个布尔掩码,只有当它不同于前面或后面的值时才选择一行:

>>> df=pd.DataFrame({ 'lits':lits })

>>> df[ (df.lits != df.lits.shift(1)) | (df.lits != df.lits.shift(-1)) ]

    lits
0      1
2      1
3      2
4      0
7      0
8      3
9      3
10     1
11     4
12     5
13     2
15     2
16     0
18     0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    相关资源
    最近更新 更多