首页 > 解决方案 > 熊猫删除具有不同列值的不同行

问题描述

我有df = pd.DataFrame({'col1': ["a","b","c","d","e", "e"], 'col2': [1,3,3,2,6,6], 'col3': [1,2,3,4,5,6]})看起来像的 DataFrame

输入:

     col1 col2 col3
    0   a   1   1
    1   b   3   2
    2   c   3   3
    3   d   2   4
    4   e   6   5
    5   e   6   6

我想从“col1”中删除在“col2”中共享一个公共值的行,除了相同的值,即字母“e”。我希望它是“col1”中只有一个值可以=“col2”中的唯一值预期的输出看起来像......

输出:

     col1 col2 col3
    0   a   1   1
    3   d   2   4
    4   e   6   5
    5   e   6   6

这样做的过程是什么?

标签: pythonpandasdataframe

解决方案


根据您的描述,我的理解如下:

  1. 如果两行在 中具有相同的值col2,则它们都被删除。
  2. 如果两行在 中具有相同的值col2但在 中具有相同的值col1,则您希望保留它们。
  3. 您要保留的所有其他不属于上述两个类别的行。

这可以通过以下方式实现:

df[np.logical_or(~df.duplicated('col2', keep = False),df.duplicated('col1', keep = False)) ]

推荐阅读