如何删除连续的重复值?

时间:2018-05-24 14:55:45

标签: python pandas

我有一个包含数千行的数据框;在每一行中,一些值是重复的。我希望删除这些重复项,只保留唯一值。

为了说明,这是原始数据:

  Column 1 Column 2 Column 3
0        A        B        A
1        D        C        C
2        E        E        E
3        F        G        H

成:

  Column 1 Column 2 Column 3
0        A        B        
1        D        C        
2        E                
3        F        G        H

我尝试过应用df.drop_duplicates,但它会在列而不是行中删除重复值。

1 个答案:

答案 0 :(得分:10)

您可以逐行应用drop_duplicates:

df.apply(lambda x: x.drop_duplicates(), axis=1)

  Column_1 Column_2 Column_3
0        A        B      NaN
1        D        C      NaN
2        E      NaN      NaN
3        F        G        H

编辑:

根据DeepSpace的建议,我做了一些时间来确定应用pd.Series.drop_duplicates是否比使用lambda更快。

df = pd.DataFrame({'Column_1':np.random.randint(1,10,10**4),
                   'Column_2':np.random.randint(1,10,10**4),
                   'Column_3':np.random.randint(1,10,10**4)})

%timeit df.apply(lambda x: x.drop_duplicates(), axis=1)
435 ms ± 8.24 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

%timeit df.apply(pd.Series.drop_duplicates, axis=1)
443 ms ± 15.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

不幸的是,两种解决方案都相当缓慢(1000行已占用半秒)。