1. 使用 drop_duplicates
去重
1.1 初始化數據
df = pd.DataFrame({'stu_name': ['Tom', 'Tony', 'Jack', 'Jack', np.nan], 'stu_age': [16, 16, 15, np.nan, 21]})
stu_name stu_age
0 Nancy 17.0
1 Tony 16.0
2 Tony 16.0
3 Jack 21.0
4 Jack NaN
1.2 對一列去重
df_clean = df.drop_duplicates(subset=['stu_name'])
print(df)
stu_name stu_age
0 Nancy 17.0
1 Tony 16.0
3 Jack 21.0
1.3 對多列去重(多列同時滿足重復)
df_clean2 = df.drop_duplicates(subset=['stu_name', 'stu_age'])
print(df_clean2)
stu_name stu_age
0 Nancy 17.0
1 Tony 16.0
3 Jack 21.0
4 Jack NaN
2. 使用 duplicated
配合 drop
去重
2.1 初始化數據
df = pd.DataFrame({'stu_name': ['Tom', 'Tony', 'Jack', 'Jack', np.nan], 'stu_age': [16, 16, 15, np.nan, 21]})
stu_name stu_age
0 Nancy 17.0
1 Tony 16.0
2 Tony 16.0
3 Jack 21.0
4 Jack NaN
2.2 對一列去重
duplicate_df = df[df.duplicated('stu_name')]
clean_df = df.drop(duplicate_df.index)
- 使用
duplicated
先篩選出重復的行 - 使用
drop
刪除掉重復行
3. drop_duplicates
與 duplicated
常用參數含義
subset
: 單個列名或者 一組列名數組(可選)。如果不設置該參數,則默認對全部列進行去重
keep
: 保留的列
- 'first': 只保留第一個,其他重復項被刪除(默認)
- 'last': 只保留最后一個,其他重復項被刪除
- False: 出現重復項則都被刪除