我正在使用pandas来处理csv文件。如果连续发生,我需要删除一些重复值。 我知道有一个重复的函数可以删除第二次重复的任何值,无论它们发生在何处。 但是,只有当列的值重复超过5个连续行时,我才必须删除数据。 例如,
1
1
3
1
1
1
1
1
2
在这里,我不想删除B顶部的两个1,但只有1个连续重复5次。 关于我应该怎么做的任何指示?
答案 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