【问题标题】:Create new row in a dataframe if values from two columns are different如果两列中的值不同,则在数据框中创建新行
【发布时间】:2022-01-24 15:53:44
【问题描述】:

假设我有一个像这样的数据框:

     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

所以,我想比较列 Tag_history 和新标签,如果标签已更改,我想添加一个在 Tag_history 中显示的新行以及新标签。例如对于 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)

【问题讨论】:

    标签: python python-3.x pandas dataframe


    【解决方案1】:

    首先,我不建议使用任何循环,因为它们不是很有效。

    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
    
    

    【讨论】:

    • 非常感谢,@seghair
    猜你喜欢
    • 1970-01-01
    • 2016-03-11
    • 2022-06-13
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2022-12-20
    • 1970-01-01
    • 2019-02-13
    相关资源
    最近更新 更多