drop_duplicate方法是对DataFrame格式的数据,去除特定列下面的重复行。返回DataFrame格式的数据
df.drop_duplicates(keep= , subset=[], inplace= )
keep: {‘first’, ‘last’, False},默认为’first’
保留项。保留第一个(first)/最后一个(last)/不保留(False)重复的项
subset:默认所有列
指定的列。即需要删除哪些列中重复的项,列用’'说明,用,隔开
inplace : {‘True’,‘False’},默认为False
是否在原数据上修改。False表示另存一个副本
下面以例子来说明:
新建一个表格示例数据如下
1.删除重复行
删除type中重复的项,并保留第一次出现的数据
df.drop_duplicates(keep='first', subset=['type'])
删除month和type中同时重复的项,并保留最后一次出现的数据
df.drop_duplicates(keep='last', subset=['type', 'month'])
2.保留不重复行
保留id只出现过一次的数据
df.drop_duplicates(keep=False, subset=['id'])
3.保留重复行
保留id重复的数据
首先将2中不重复的数据保存,再从原始数据中删除2的数据
# 只出现一次的元素
output1 = df.drop_duplicates(keep=False, subset=['id'])
output1.to_csv('E:\\output1.csv', encoding='utf-8-sig', index=True)
output2 = df
# 删除output1中的元素
for i in range(0, len(output1)):
output2.drop([output1.index[i]], inplace=True)
output2.to_csv('E:\\output2.csv', encoding='utf-8-sig', index=False)
完整代码
import pandas as pd
beer = pd.read_csv("E:\\test.csv", encoding='utf-8-sig', low_memory=False)
df = pd.DataFrame(beer)
output1 = df.drop_duplicates(...)
output1.to_csv('E:\\output1.csv', encoding='utf-8-sig', index=True)
output2 = df
for i in range(0, len(output1)):
output2.drop([output1.index[i]], inplace=True)
output2.to_csv('E:\\output2.csv', encoding='utf-8-sig', index=False)