I have a df:
pageid
sid vid
1 ABC dog
ABC dog
ABC dog
ABC dog
2 DEF cat
DEF cat
DEF pig
DEF cat
3 GHI pig
GHI cat
GHI dog
GHI dog
Constructor:
import pandas as pd
i = pd.MultiIndex.from_arrays(
[[1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3],
['ABC', 'ABC', 'ABC', 'ABC', 'DEF', 'DEF', 'DEF', 'DEF', 'GHI', 'GHI',
'GHI', 'GHI']],
names=('sid', 'vid')
)
df = pd.DataFrame({
'pageid': ['dog', 'dog', 'dog', 'dog', 'cat', 'cat', 'pig', 'cat',
'pig', 'cat', 'dog', 'dog']
}, index=i)
I want to essentially remove duplicates from the pageid column if they exist within a session, sid and if and only if they're sequential up to n times. The only examples I have found use .shift() which would work well if I didn't have to worry about n > 1 duplicates. Unfortunately, I have some instances where I get something like n = 30 sequential duplicates.
Before:
pageid
sid vid
1 ABC dog
ABC dog
ABC dog
ABC dog
2 DEF cat
DEF cat
DEF pig
DEF cat
3 GHI pig
GHI cat
GHI dog
GHI dog
After:
pageid
sid vid
1 ABC dog
2 DEF cat
DEF pig
DEF cat
3 GHI pig
GHI cat
GHI dog