I would like to check the value of the row above and see it it is the same as the current row. I found a great answer here: df['match'] = df.col1.eq(df.col1.shift())
such that col1
is what you are comparing. However, when I tried it, I received a A value is trying to be set on a copy of a slice from a DataFrame.
warning. My col1
is a string. I know you can ignore warnings but how would I check the same row above and make sure that I am not creating a copy of the dataframe? I tried to reproduce the error here with the code below, but I of course I cannot. Even with the warning I do get my desired output, but was curious if there exists a better way.
import pandas as pd
data={'col1':['a','a','a','b','b','c','c','c']}
df=pd.DataFrame(data,columns=['col1'])
df['week']=1
df['check_condition']=1
while sum(df.check_condition) != 0:
for week in df.week:
wk = df.loc[df.week == week]
wk['match'] = wk.col1.eq(wk.col1.shift()) # where the warning occurs
# fix the repetitive value...which I have not done yet
# for now just exit out of the while loop
df.loc[df.week == week,'check_condition'] = 0