我熟悉如何删除重复行,并使用参数
但是,我想找的是一种方法,可以找到重复项,但不是删除所有重复项并保留第一个,而是如果我有重复项,则保留所有重复项,但删除第一个:
因此,我想要的不是“删除重复项,保留第一个”,而是“保留重复项,删除第一个”。
例如:
给定这个数据框,在
如果在
因此,我的输出应为:
first
、last
、none
。这并不太复杂,有大量的示例(例如这里)。但是,我想找的是一种方法,可以找到重复项,但不是删除所有重复项并保留第一个,而是如果我有重复项,则保留所有重复项,但删除第一个:
因此,我想要的不是“删除重复项,保留第一个”,而是“保留重复项,删除第一个”。
例如:
给定这个数据框,在
cost
列中查找重复项: ID name type cost
0 0 a bb 1
1 1 a cc 2 <--- there are duplicates, so drop this row
2 1_0 a dd 2
3 2 a ee 3 <--- there are duplicates, so drop this row
4 2_0 a ff 3
5 2_1 a gg 3
6 2_2 a hh 3
如果在
cost
列中存在重复值,则只需删除第一次出现的值,但保留其余值。因此,我的输出应为:
ID name type cost
0 0 a bb 1
2 1_0 a dd 2
4 2_0 a ff 3
5 2_1 a gg 3
6 2_2 a hh 3
以下是示例数据框:
import pandas as pd
df = pd.DataFrame([
['0', 'a', 'bb', '1'],
['1', 'a', 'cc', '2'],
['1_0', 'a', 'dd', '2'],
['2', 'a', 'ee', '3'],
['2_0', 'a', 'ff', '3'],
['2_1', 'a', 'gg', '3'],
['2_2', 'a', 'hh', '3']], columns = ['ID', 'name', 'type', 'cost'])
df[~df.duplicated('cost') & df.duplicated('cost', keep=False)]
。这实现了问题:“保留所有重复项,但不保留第一个实例”。 - defraggled