python - 熊猫删除具有不同列值的不同行
问题描述
我有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
这样做的过程是什么?
解决方案
根据您的描述,我的理解如下:
- 如果两行在 中具有相同的值
col2
,则它们都被删除。 - 如果两行在 中具有相同的值
col2
但在 中具有相同的值col1
,则您希望保留它们。 - 您要保留的所有其他不属于上述两个类别的行。
这可以通过以下方式实现:
df[np.logical_or(~df.duplicated('col2', keep = False),df.duplicated('col1', keep = False)) ]