在Pandas中,删除DataFrame中完全相同的行可以使用drop_duplicates()
方法。这个方法会返回一个去重后的DataFrame,而不改变原始DataFrame。如果你希望直接在原始DataFrame上进行修改,可以使用inplace=True
参数。
import pandas as pd
# 示例DataFrame
data = {
'A': [1, 2, 2, 3],
'B': [4, 5, 5, 6],
'C': [7, 8, 8, 9]
}
df = pd.DataFrame(data)
# 删除完全相同的行
df_no_duplicates = df.drop_duplicates()
print(df_no_duplicates)
subset
: 指定要考虑的列,默认是考虑所有列。keep
: 指定保留哪个重复行。可选值为:
'first'
(默认):保留第一个出现的重复行。'last'
:保留最后一个出现的重复行。False
:删除所有重复行。inplace
: 如果为True
,则直接在原始DataFrame上进行修改,不返回新的DataFrame。如果你只想根据某些列进行去重,可以使用subset
参数:
df_no_duplicates = df.drop_duplicates(subset=['A', 'B'])
df_no_duplicates = df.drop_duplicates(keep='last')
df.drop_duplicates(inplace=True)
对于非常大的DataFrame,去重操作可能会比较耗时。可以考虑以下优化方法:
1. 使用sort_values()
:在去重之前对DataFrame进行排序,可能会提高去重效率。
2. 使用groupby()
:在某些情况下,使用groupby()
结合first()
或last()
方法也可以实现去重。
df_no_duplicates = df.sort_values(by=['A', 'B']).drop_duplicates()
drop_duplicates()
是Pandas中用于删除DataFrame中完全相同的行的常用方法。通过合理使用其参数,可以灵活地控制去重行为,并且可以通过一些优化手段提高去重效率。