删除在Pandas DataFrame中重复次数超过5次的值

时间:2015-01-23 11:48:46

标签: python pandas

我正在使用pandas来处理csv文件。如果连续发生,我需要删除一些重复值。 我知道有一个重复的函数可以删除第二次重复的任何值,无论它们发生在何处。 但是,只有当列的值重复超过5个连续行时,我才必须删除数据。 例如,

     1
     1
     3
     1 
     1
     1
     1
     1
     2

在这里,我不想删除B顶部的两个1,但只有1个连续重复5次。 关于我应该怎么做的任何指示?

2 个答案:

答案 0 :(得分:0)

这应该这样做:

>> df = pd.Series([1,1,3,1,1,1,1,1,2])
>> df.groupby((df.shift() != df).cumsum())\
     .filter(lambda x: len(x) < 5)
0    1
1    1
2    3
8    2

答案 1 :(得分:0)

展示了 elyase 的回答如何也适用于 DataFrame(而非系列)。

>> df = pd.DataFrame(np.array([[1,1,3,1,1,1,1,1,2]]).transpose(),columns = ["col"])
>> df.groupby((df["col"].shift() != df["col"]).cumsum()).filter(lambda x: len(x) < 5)
    col
 0    1
 1    1
 2    3
 8    2