【问题标题】:Find not duplicated rows in dataframe with condition在有条件的数据框中查找不重复的行
【发布时间】:2021-08-04 11:49:36
【问题描述】:

我需要检查具有重复行、乘法条件的数据框并选择它们: 我的意见:

 task_id frame  m_label
0   466   15    Other
1   466  376    Other
2   466  376    Snapshot
3   466  5053   Transverse
4   466  5053   Snapshot
5   466  5280   Snapshot
6   477  11740  General
7   477  11740  Snapshot

所以我需要检查是否在相同的“task_id”和相同的“框架”中,“m_label”是快照和 其他东西 例如这里,'task_id' 466、'frame' 376 有两个不同的标签:一个必须是快照,另一个是其他。也是第 5053 帧或在 'task_id' 477 帧 11740 适合条件。所以很符合我的条件。另一方面,帧 5280 不好,它只有一个标签快照。所以我需要添加一列,说明它只是这个框架中的快照。 为了清楚。我只需要在特定任务和框架中的“快照”只有一个的地方查找和标记,在任务的同一框架中没有任何其他标签
异常输出:

谢谢

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    您可以groupby 您的两列并使用transform 应用您的测试:

    df['Test'] = (df.groupby(['task_id', 'frame'])
                    ['m_label']
                    .transform(lambda x: len(x)<2 and
                                         'Snapshot' in x.values
                               )
                    .map({True: 'Only one', False: ''})
                  )
    

    输出:

       task_id  frame     m_label      Test
    0      466     15       Other          
    1      466    376       Other          
    2      466    376    Snapshot          
    3      466   5053  Transverse          
    4      466   5053    Snapshot          
    5      466   5280    Snapshot  Only one
    6      477  11740     General          
    7      477  11740    Snapshot          
    

    【讨论】:

    • 我想我不够清楚。我只需要在特定任务和框架中的“快照”只有一个的地方查找和标记,在任务的同一框架中没有任何其他标签
    • 嗯,我又读了几遍,你的解释真的不清楚。 (1) 请提供预期的输出,(2) 请努力解释清楚您期望的聊天。
    • 添加了预期输出
    • 我更新了答案。老实说,您可以从最初的答案中自己弄清楚。
    猜你喜欢
    • 2020-07-03
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 2014-03-01
    • 2018-04-21
    • 1970-01-01
    相关资源
    最近更新 更多