[英]Create new row in a dataframe if values from two columns are different
Lets say I have a dataframe like this one:假设我有一个像这样的 dataframe:
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.因此,我想比较列 Tag_history 和新标签,如果标签已更改,我想添加一个新行,该行在 Tag_history 中也显示新标签。 Eg for For Name2, the tag has changed from Tag8 to Tag9, so i want my df to look like this:
例如对于 Name2,标签已从 Tag8 更改为 Tag9,所以我希望我的 df 看起来像这样:
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)
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.