猿问

Python Pandas 最多保留 3 个连续重复

我有这张桌子:


import pandas as pd


list1 = [1,1,2,2,3,3,3,3,4,1,1,1,1,2,2]

df = pd.DataFrame(list1)

df.columns = ['A']

我想保留最多 3 个连续的重复项,或者保留全部以防重复项少于 3 个(或没有)。


结果应如下所示:


list2 = [1,1,2,2,3,3,3,4,1,1,1,2,2]

result = pd.DataFrame(list2)

result.columns = ['A']



慕森王
浏览 229回答 3
3回答

沧海一幻觉

与连续系列一起使用GroupBy.head,通过比较不相等的移位值和累积和来创建Series.cumsum:df1 = df.groupby(df.A.ne(df.A.shift()).cumsum()).head(3)print (df1)    A0   11   12   23   24   35   36   38   49   110  111  113  214  2详情:print (df.A.ne(df.A.shift()).cumsum())0     11     12     23     24     35     36     37     38     49     510    511    512    513    614    6Name: A, dtype: int32

侃侃尔雅

与连续系列一起使用GroupBy.head,通过比较不相等的移位值和累积和来创建Series.cumsum:df1 = df.groupby(df.A.ne(df.A.shift()).cumsum()).head(3)print (df1)    A0   11   12   23   24   35   36   38   49   110  111  113  214  2详情:print (df.A.ne(df.A.shift()).cumsum())0     11     12     23     24     35     36     37     38     49     510    511    512    513    614    6Name: A, dtype: int32

慕神8447489

解决itertools.groupby只有连续重复的组,然后切片3个元素:import itertoolspd.Series(itertools.chain.from_iterable([*g][:3] for i,g in itertools.groupby(df['A'])))0     11     12     23     24     35     36     37     48     19     110    111    212    2dtype: int64
随时随地看视频慕课网APP

相关分类

Python
我要回答