我有一个看起来像这样的DataFrame df = 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”)。我希望它是“ col1”中只有一个值可以等于“ col2”中唯一的值的地方,期望的输出看起来像是...
输出:
col1 col2 col3
0 a 1 1
3 d 2 4
4 e 6 5
5 e 6 6
这样做的过程是什么?
答案 0 :(得分:2)
根据您的描述,我理解如下:
col2
中具有相同的值,则它们都将被删除。col2
中具有相同的值,但在col1
中具有相同的值,则要保留它们。这可以通过以下方式实现:
df[np.logical_or(~df.duplicated('col2', keep = False),df.duplicated('col1', keep = False)) ]
答案 1 :(得分:2)
您可以执行以下操作:
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 |