Pandas löschen doppelte Zeilen
-
DataFrame.drop_duplicates()
Syntax -
Entfernen doppelter Zeilen mit der Methode
DataFrame.drop_duplicates()
-
Setzen Sie
keep='last'
in derdrop_duplicates()
Methode
Dieses Tutorial erklärt, wie wir alle doppelten Zeilen aus einem Pandas DataFrame mit der Methode DataFrame.drop_duplicates()
entfernen können.
DataFrame.drop_duplicates()
Syntax
DataFrame.drop_duplicates(subset=None, keep="first", inplace=False, ignore_index=False)
Die Methode gibt einen DataFrame zurück und entfernt alle wiederholten Zeilen im DataFrame.
Entfernen doppelter Zeilen mit der Methode DataFrame.drop_duplicates()
import pandas as pd
df_with_duplicates = pd.DataFrame(
{
"Id": [302, 504, 708, 103, 303, 302],
"Name": ["Watch", "Camera", "Phone", "Shoes", "Watch", "Watch"],
"Cost": ["300", "400", "350", "100", "300", "300"],
}
)
df_without_duplicates = df_with_duplicates.drop_duplicates()
print("DataFrame with duplicates:")
print(df_with_duplicates, "\n")
print("DataFrame without duplicates:")
print(df_without_duplicates, "\n")
Ausgabe:
DataFrame with duplicates:
Id Name Cost
0 302 Watch 300
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
4 303 Watch 300
5 302 Watch 300
DataFrame without duplicates:
Id Name Cost
0 302 Watch 300
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
4 303 Watch 300
Es werden die Zeilen entfernt, die für alle Spalten die gleichen Werte haben. Standardmäßig werden nur die Zeilen, die für jede Spalte im DataFrame die gleichen Werte haben, als Duplikate betrachtet. Im DataFrame df_with_duplicates
haben die erste und die fünfte Zeile für alle Spalten die gleichen Werte, so dass die fünfte Zeile entfernt wird.
Parameter subset
setzen, um Duplikate nur auf Basis bestimmter Spalten zu entfernen
import pandas as pd
df_with_duplicates = pd.DataFrame(
{
"Id": [302, 504, 708, 103, 303, 302],
"Name": ["Watch", "Camera", "Phone", "Shoes", "Watch", "Watch"],
"Cost": ["300", "400", "350", "100", "300", "300"],
}
)
df_without_duplicates = df_with_duplicates.drop_duplicates(subset=["Name"])
print("DataFrame with duplicates:")
print(df_with_duplicates, "\n")
print("DataFrame without duplicates:")
print(df_without_duplicates, "\n")
Ausgabe:
DataFrame with duplicates:
Id Name Cost
0 302 Watch 300
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
4 303 Watch 300
5 302 Watch 300
DataFrame without duplicates:
Id Name Cost
0 302 Watch 300
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
Hier übergeben wir Name
als subset
-Argument an die Methode drop_duplicates()
. Die vierte und fünfte Zeile werden entfernt, da sie den gleichen Wert der Spalte Name
haben wie die erste Spalte.
Setzen Sie keep='last'
in der drop_duplicates()
Methode
import pandas as pd
df_with_duplicates = pd.DataFrame(
{
"Id": [302, 504, 708, 103, 303, 302],
"Name": ["Watch", "Camera", "Phone", "Shoes", "Watch", "Watch"],
"Cost": ["300", "400", "350", "100", "300", "300"],
}
)
df_without_duplicates = df_with_duplicates.drop_duplicates(subset=["Name"], keep="last")
print("DataFrame with duplicates:")
print(df_with_duplicates, "\n")
print("DataFrame without duplicates:")
print(df_without_duplicates, "\n")
Ausgabe:
DataFrame with duplicates:
Id Name Cost
0 302 Watch 300
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
4 303 Watch 300
5 302 Watch 300
DataFrame without duplicates:
Id Name Cost
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
5 302 Watch 300
Es werden alle Zeilen entfernt, bis auf die letzte Zeile, die den gleichen Wert der Spalte Name
hat.
Wir setzen keep=False
, um alle Zeilen zu entfernen, die den gleichen Wert einer beliebigen Spalte haben.
import pandas as pd
df_with_duplicates = pd.DataFrame(
{
"Id": [302, 504, 708, 103, 303, 302],
"Name": ["Watch", "Camera", "Phone", "Shoes", "Watch", "Watch"],
"Cost": ["300", "400", "350", "100", "300", "300"],
}
)
df_without_duplicates = df_with_duplicates.drop_duplicates(subset=["Name"], keep=False)
print("DataFrame with duplicates:")
print(df_with_duplicates, "\n")
print("DataFrame without duplicates:")
print(df_without_duplicates, "\n")
Ausgabe:
DataFrame with duplicates:
Id Name Cost
0 302 Watch 300
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
4 303 Watch 300
5 302 Watch 300
DataFrame without duplicates:
Id Name Cost
1 504 Camera 400
2 708 Phone 350
3 103 Shoes 100
Es werden die erste, fünfte und sechste Zeile entfernt, da sie alle den gleichen Wert für die Spalte Name
haben.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedInVerwandter Artikel - Pandas DataFrame Row
- So erhalten Sie die Zeilenanzahl eines Pandas DataFrame
- Zufälliges Mischen von DataFrame-Zeilen in Pandas
- Wie man DataFrame-Zeilen auf der Grundlage von Spaltenwerten in Pandas filtert
- Wie man durch Zeilen eines DataFrame in Pandas iteriert
- Wie erhält man einen Index aller Reihen, deren bestimmte Spalte den gegebenen Zustand in Pandas befriedigt
- Finden Sie doppelte Zeilen in einem DataFrame mit Pandas