1 方法介绍
去除Pandas中的重复列
DataFrame.drop_duplicates(
subset=None,
*,
keep='first',
inplace=False,
ignore_index=False)
2 参数说明
subset | 只考虑subset中提到的这些列是不是重复的,其他列重复也不用考虑 默认:所有列 |
keep | 决定重复的那些行怎么处置 有三个选项:
|
inplace | 是否替换原DataFrame |
ignore_index | 如果为True,重新排index |
3 举例
3.0 原始数据
df = pd.DataFrame({
'brand': ['Yum Yum', 'Yum Yum', 'Indomie', 'Indomie', 'Indomie'],
'style': ['cup', 'cup', 'cup', 'pack', 'pack'],
'rating': [4, 4, 3.5, 15, 5]
})
df
3.1 基本用法
df.drop_duplicates()
3.2 subset
df.drop_duplicates(subset='style')
3.3 keep
df.drop_duplicates(keep='last')
df.drop_duplicates(keep=False)
4 同时保留第一条和最后一条duplicate记录
由于keep只能在first和last中选,所以如果想保留第一和最后一条,那么就需要额外的操作:
还是之前的数据:
df = pd.DataFrame({
'brand': ['Yum Yum', 'Yum Yum', 'Indomie', 'Indomie', 'Indomie'],
'style': ['cup', 'cup', 'cup', 'pack', 'pack'],
'rating': [4, 4, 3.5, 15, 5]
})
df
keep为first和last各进行一次
df1=df.drop_duplicates('brand','first')
df1
'''
brand style rating
0 Yum Yum cup 4.0
2 Indomie cup 3.5
'''
df2=df.drop_duplicates('brand','last')
df2
'''
brand style rating
1 Yum Yum cup 4.0
4 Indomie pack 5.0
'''
concat+重新排序
df_d=pd.concat([df1,df2])
df_d
'''
brand style rating
0 Yum Yum cup 4.0
2 Indomie cup 3.5
1 Yum Yum cup 4.0
4 Indomie pack 5.0
'''
df_d=df_d.sort_index()
df_d
'''
brand style rating
0 Yum Yum cup 4.0
1 Yum Yum cup 4.0
2 Indomie cup 3.5
4 Indomie pack 5.0
'''