Python Pandas dataframe.drop_duplicates()
Pandas drop_duplicates()方法有助于从Pandas Dataframe In Python中删除重复的内容。
df.drop_duplicates()
语法: DataFrame.drop_duplicates(subset=None, keep=’first’, inplace=False)
参数:
- subset。Subset接收一个列或列标签的列表。它的默认值是无。在传递列之后,它将只考虑它们的重复。
- keep:keep是用来控制如何考虑重复的值。它只有三个不同的值,默认是 “first”。
- 如果’first’,它认为第一个值是唯一的,其余相同的值是重复的。
- 如果是’last’,它认为最后一个值是唯一的,其余的相同值是重复的。
- 如果是假的,它认为所有相同的值都是重复的。
- inplace:布尔值,如果为真,则删除有重复的行。
返回类型:数据框架,根据传递的参数,删除重复的行。
示例:
我们可以看到其中一个TeamA和团队由于价值重复而被放弃。
import pandas as pd
data = {
"A": ["TeamA", "TeamB", "TeamB", "TeamC", "TeamA"],
"B": [50, 40, 40, 30, 50],
"C": [True, False, False, False, True]
}
df = pd.DataFrame(data)
display(df.drop_duplicates())
输出:
A B C
0 TeamA 50 True
1 TeamB 40 False
3 TeamC 30 False
要下载所用的CSV文件,请点击这里。
例子1:删除具有相同名字的行
在下面的例子中,具有相同名字的行被删除,并返回一个新的数据框架。
# importing pandas package
import pandas as pd
# making data frame from csv file
data = pd.read_csv("employees.csv")
# sorting by first name
data.sort_values("First Name", inplace=True)
# dropping ALL duplicate values
data.drop_duplicates(subset="First Name",
keep=False, inplace=True)
# displaying data
data
输出:
如图所示,具有相同名称的行被从一个数据框中删除。
例子2:删除有所有重复值的行
在这个例子中,拥有所有数值的行将被删除。由于CSV文件中没有这样的行,所以先复制一个随机行并插入到数据框中。
# length before adding row
length1 = len(data)
# manually inserting duplicate of a row of row 440
data.loc[1001] = [data["First Name"][440],
data["Gender"][440],
data["Start Date"][440],
data["Last Login Time"][440],
data["Salary"][440],
data["Bonus %"][440],
data["Senior Management"][440],
data["Team"][440]]
# length after adding row
length2 = len(data)
# sorting by first name
data.sort_values("First Name", inplace=True)
# dropping duplicate values
data.drop_duplicates(keep=False, inplace=True)
# length after removing duplicates
length3 = len(data)
# printing all data frame lengths
print(length1, length2, length3)
输出:
如输出图片所示,删除重复的数据后的长度为999。由于keep参数被设置为False,所有重复的行都被删除。