drop_duplicates()函数是Pandas库中的一个通用函数,在我们处理数据集和分析数据的时候,它是一个重要的函数。
Pandas数据框 drop_duplicates
Pandas drop_duplicates()函数用于分析重复的数据并将其删除。drop_duplicates()函数有助于从DataFrame中删除重复的数据。
Pandas drop_duplicates()函数返回已删除重复行的DataFrame。
要从DataFrame中移除 重复的 行,请使用Pandas DataFrame drop_duplicates()。
语法
DataFrame.drop_duplicates(subset=None, keep=’first’, inplace=False)
参数
它有以下参数:
-
subset:它需要一个列或列的列表。默认情况下,它不接受任何列。在传递列之后,它将只考虑它们的重复。
-
keep:它是用来控制如何考虑重复的值。它可以有3个值。'y默认,它是'第一'。所有'三个值的含义是:
- 1 - 'first' - 它认为第一个值是唯一的,其余相同的值是重复的。
- 2 - 'last' - 它认为最后一个值是唯一的,其余相同的值是重复的。
- 3 - False - 如果是false,它认为所有相同的值都是重复的。
-
inplace:它接受布尔值,如果为真,则删除有重复的行。
返回值
drop_duplicates()函数返回已删除重复行的DataFrame,如果inplace=True则返回None。
drop_duplicates()的示例程序
写一个程序来展示drop_duplicates()的工作原理:
import pandas as pd
data_dict = {"Name": ["Rohit", "Karan", "Shivam", "Karan"],
"Age": [21, 23, 31, 23],"City":["Patna","Kolkata","Mumbai","Kolkata"]}
df = pd.DataFrame(data_dict)
print(df)
df2 = df.drop_duplicates()
print("\n After removal of duplicate rows:\n")
print(df2)
输出
Name Age City
0 Rohit 21 Patna
1 Karan 23 Kolkata
2 Shivam 31 Mumbai
3 Karan 23 Kolkata
After removal of duplicate rows:
Name Age City
0 Rohit 21 Patna
1 Karan 23 Kolkata
2 Shivam 31 Mumbai
在上面的例子中,我们可以看到,我们有2条重复的记录,学生 名字是Karan。因此,使用drop_duplicates()后,我们可以删除重复的行。
例2:写一个程序,使用drop_duplicates()删除某一列中的重复行
请看下面的代码:
import pandas as pd
data_dict = {"Name": ["Rohit", "Karan", "Shivam", "Ajit"],
"Age": [21, 23, 31, 23], "City": ["Patna", "Kolkata", "Mumbai", "Kolkata"]}
df = pd.DataFrame(data_dict)
print(df)
df.drop_duplicates(subset="City",
keep=False, inplace=True)
print("\nDataFrame after removing students belonging to same city:\n", df)
输出
Name Age City
0 Rohit 21 Patna
1 Karan 23 Kolkata
2 Shivam 31 Mumbai
3 Ajit 23 Kolkata
DataFrame after removing students belonging to same city:
Name Age City
0 Rohit 21 Patna
2 Shivam 31 Mumbai
在上面的例子中,我们可以看到Karan和Ajitwe'veng到了同一个城市,Kolkata。
因此,我们只考虑了"城市 " 这一列,而忽略了其他所有的事实。之后,我们打印了 结果的DataFrame。
删除重复的数据并保留最后一行
要保留最后一行并删除所有其他重复的行,使用keep='last'作为参数:
import pandas as pd
data_dict = {"Name": ["Rohit", "Karan", "Shivam", "Ajit", "Ajit"],
"Age": [21, 23, 31, 23, 23], "City": ["Patna", "Kolkata", "Mumbai", "Kolkata", "Kolkata"]}
df = pd.DataFrame(data_dict)
print(df)
df.drop_duplicates(subset="City",
keep='last', inplace=True)
print("\nDataFrame after removing students belonging to same city:\n", df)
输出
Name Age City
0 Rohit 21 Patna
1 Karan 23 Kolkata
2 Shivam 31 Mumbai
3 Ajit 23 Kolkata
4 Ajit 23 Kolkata
DataFrame after removing students belonging to same city:
Name Age City
0 Rohit 21 Patna
2 Shivam 31 Mumbai
4 Ajit 23 Kolkata
在这个例子中,我们正在删除基于城市的记录。
在我们的DataFrame中,city = 'Kolkata'出现了三次,所以它将删除两个不会,我们已经通过keep=last,所以它不会删除最后一行。
你可以看到,索引行1和3被移除,而第4行因为keep='last'而没有被移除。
根据特定的列删除重复的行
我们必须通过列表子集参数来移除基于特定列的重复行。列表值是列名;你 不传递单列,就不必给出列表,但如果你有多列,你需要给出包含列名的列表。
import pandas as pd
data_dict = {"Name": ["Rohit", "Karan", "Shivam", "Ajit", "Ajit"],
"Age": [21, 23, 31, 23, 23], "City": ["Patna", "Kolkata", "Mumbai", "Kolkata", "Kolkata"]}
df = pd.DataFrame(data_dict)
print(df)
df.drop_duplicates(subset=["City", "Age"],
keep='last', inplace=True)
print("\nDataFrame after removing students belonging to same city and age:\n", df)
输出
Name Age City
0 Rohit 21 Patna
1 Karan 23 Kolkata
2 Shivam 31 Mumbai
3 Ajit 23 Kolkata
4 Ajit 23 Kolkata
DataFrame after removing students belonging to same city:
Name Age City
0 Rohit 21 Patna
2 Shivam 31 Mumbai
4 Ajit 23 Kolkata
在这个例子中,我们传递了两列;基于这些列,我们将删除重复的行。我们把Age 和 City 作为列名,并根据这些列的值删除记录。
结论
drop_dupDataFrame'只保存DataFrame的唯一值。如果你想从DataFrame中获取唯一的行,请使用df.drop_duplicates()方法。