panda删除具有不同列值的不同行



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

输入:

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";。我希望它在"0"中只有一个值;col1";can="1"中唯一的一个;col2";预期输出看起来像。。。

输出:

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

这样做的过程是什么?

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

  1. 如果两行在col2中具有相同的值,则它们都将被删除
  2. 如果两行在col2中具有相同的值,但在col1中具有相同值,则需要保留它们
  3. 不属于以上两类的所有其他行,都要保留

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

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

您可以执行以下操作:

df[df.col1.duplicated(keep=False) | ~df.col2.duplicated(keep=False)]

输出

| col1   |   col2 |   col3 |
|:-------|-------:|-------:|
| a      |      1 |      1 |
| d      |      2 |      4 |
| e      |      6 |      5 |
| e      |      6 |      6 |

最新更新