【问题标题】:python pandas remove duplicates in seriespython pandas连续删除重复项
【发布时间】:2012-10-09 09:16:43
【问题描述】:

是否有一个函数来强制索引是唯一的,或者它是否只能通过转换为 dict 并返回或类似的东西在 python '本身' 中处理这个?

如下面的 cmets 所述:python pandas 是一个基于 numpy/scipy 构建的项目。

to_dict 和 back 工作,但我敢打赌,当你得到 BIG 时这会变慢。

In [24]: a = pandas.Series([1,2,3], index=[1,1,2])

In [25]: a
Out[25]: 
1    1
1    2
2    3

In [26]: a = a.to_dict()

In [27]: a
Out[27]: {1: 2, 2: 3}

In [28]: a = pandas.Series(a)

In [29]: a
Out[29]: 
1    2
2    3

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    顺便说一句,我们计划在不久的将来像DataFrame.drop_duplicates 这样的系列添加一个drop_duplicates 方法。

    【讨论】:

    • 从那时起添加,但是对于具有不同值的 OP 的情况,它不会做任何事情(pd.Series([1,2,3], index=[1,1,2]).drop_duplicates() -> 1: 1, 1: 2, 2: 3),所以应该使用 root 的答案。
    • FWIW, df.drop_duplicates 已实现。
    • 它已为 Dataframes @TimMcNamara 实现,而不是为系列实现。
    【解决方案2】:

    使用groupbylast()

    In [279]: s
    Out[279]: 
    a    1
    b    2
    b    3
    b    4
    e    5
    
    In [280]: grouped = s.groupby(level=0)
    
    In [281]: grouped.first()
    Out[281]: 
    a    1
    b    2
    e    5
    
    In [282]: grouped.last()
    Out[282]: 
    a    1
    b    4
    e    5
    

    【讨论】:

    • 在 pandas 0.8 及更高版本中,我认为您可以有重复的索引...即 s = Series([1,2,1], index=['a','a','b' ])。 to_dict 和 back 可以解决问题,但似乎应该有一个选项或东西来处理这个问题,或者这可能与我构建系列的方式有关。
    • 感谢您解决问题。可惜你错过了几个小时的 Wes McKinney...
    • 我相信我已经澄清了 //因为// Wes McKinney 的评论 :)
    猜你喜欢
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 2020-08-26
    • 2021-09-11
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多