【问题标题】:Looking for an analogue to pd.DataFrame.drop_duplicates() where order does not matter寻找顺序无关紧要的 pd.DataFrame.drop_duplicates() 的类似物
【发布时间】:2018-01-28 11:22:58
【问题描述】:

我想使用类似于删除 DataFrame 的重复项的方法。我希望列的顺序无关紧要。我的意思是函数 shuold 认为由条目'a', 'b' 组成的行与由条目'b', 'a' 组成的行相同。例如,给定

df = pd.DataFrame([['a', 'b'], ['c', 'd'], ['a', 'b'], ['b', 'a']])

   0  1
0  a  b
1  c  d
2  a  b
3  b  a

我想获得:

   0  1
0  a  b
1  c  d

优先考虑效率,因为我在 groupby 操作中的巨大数据集上运行它。

【问题讨论】:

    标签: python-3.x pandas dataframe data-cleaning drop-duplicates


    【解决方案1】:

    先调用np.sort,然后删除重复项。

    df[:] = np.sort(df.values, axis=1)
    df.drop_duplicates()
    
       0  1
    0  a  b
    1  c  d
    

    【讨论】:

    • 只是想知道,你为什么在第一行使用:?为什么不只是df = np.sort(df.values, axis=1)
    • @splinter 这是我用来更新数据框而不创建新数据框的一种小技巧。 np.sort 返回一个数组。我使用df[:] = ... 将其分配回df
    猜你喜欢
    • 2020-09-10
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 2018-05-19
    • 1970-01-01
    • 2017-11-27
    相关资源
    最近更新 更多