user14073111
user14073111

Reputation: 621

Create new row in a dataframe if values from two columns are different

Lets say I have a dataframe like this one:

     Col1   Col2   Tag_history   New_tag      Col5           created
0  Name1    Value1    Tag10      Tag10       Rank4     2021-03-21 12:58:09
1  Name1    Value2    Tag10      Tag10       Rank4     2021-03-21 13:58:09
2  Name1    Value3    Tag10      Tag10       Rank4     2021-03-21 14:58:09
3  Name2    Value1    Tag8       Tag9        Rank1     2021-03-21 10:58:09
4  Name2    Value2    Tag8       Tag9        Rank1     2021-03-21 11:58:09
5  Name2    Value4    Tag8       Tag9        Rank1     2021-03-21 12:58:09
6  Name2    Value5    Tag8       Tag9        Rank1     2021-03-21 13:58:09

So, i want to compare columns Tag_history and New tag and if the tag has changed, i want to add a new row that shows in the Tag_history also the new Tag. E.g for For Name2, the tag has changed from Tag8 to Tag9, so i want my df to look like this:

   Col1   Col2   Tag_history   New_tag       Col5          created
0  Name1    Value1    Tag10      Tag10       Rank4    2021-03-21 12:58:09
1  Name1    Value2    Tag10      Tag10       Rank4    2021-03-21 13:58:09
2  Name1    Value3    Tag10      Tag10       Rank4    2021-03-21 14:58:09
3  Name2    Value1    Tag8       Tag9        Rank1    2021-03-21 10:58:09
4  Name2    Value2    Tag8       Tag9        Rank1    2021-03-21 11:58:09
5  Name2    Value4    Tag8       Tag9        Rank1    2021-03-21 12:58:09
6  Name2    Value5    Tag8       Tag9        Rank1    2021-03-21 13:58:09
7  Name2    IDLE      Tag9       Tag9        Rank1    2022-01-24 16:50:00 (current datetime)

Upvotes: 1

Views: 64

Answers (1)

seghair tarek
seghair tarek

Reputation: 156

First of all, I don't recommend using any loops because they are not very effective.

different_value = df[~(df['Tag_history'] == df['New_tag'])] #First check and search for rows that contains different "Tag_history" and "New_tag"

different_value.loc[:,'New_tag'] = different_value['Tag_history']  #Create the new rows

df = df.append(different_value, ignore_index = True) # append dataframes

Upvotes: 2

Related Questions