Wie man eine DataFrame-Spalte basierend auf gegebenen Bedingungen in Pandas erstellt
-
List Comprehensions zum Erstellen neuer
DataFrame
-Spalten basierend auf einer gegebenen Bedingung in Pandas -
NumPy
-Methoden zum Erstellen neuerDataFrame
-Spalten auf der Grundlage eines gegebenen Zustands in Pandas -
pandas.DataFrame.apply
zum Erstellen neuerDataFrame
-Spalten auf der Grundlage einer gegebenen Bedingung in Pandas -
pandas.Series.map()
zum Erstellen neuerDataFrame
-Spalten auf der Grundlage einer gegebenen Bedingung in Pandas
Wir können die DataFrame
-Spalten basierend auf einer gegebenen Bedingung in Pandas erstellen, indem wir List Comprehensions, NumPy
-Methoden, apply()
-Methode und map()
-Methode des DataFrame-Objekts verwenden.
List Comprehensions zum Erstellen neuer DataFrame
-Spalten basierend auf einer gegebenen Bedingung in Pandas
Wir können verschiedene Listen Comprehension verwenden, um neue DataFrame
-Spalten basierend auf einer gegebenen Bedingung in Pandas zu erstellen. List Comprehension ist eine Methode, um neue Listen aus iterablen zu erstellen. Sie ist ziemlich schneller und einfacher als andere Methoden.
import pandas as pd
import numpy as np
list_of_dates = [
"2019-11-20",
"2020-01-02",
"2020-02-05",
"2020-03-10",
"2020-04-16",
"2020-05-01",
]
employees = ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry", "Kevin"]
salary = [200, 400, 300, 500, 600, 300]
df = pd.DataFrame(
{"Name": employees, "Joined date": pd.to_datetime(list_of_dates), "Salary": salary}
)
df["Status"] = ["Senior" if s >= 400 else "Junior" for s in df["Salary"]]
print(df)
Ausgabe:
Name Joined date Salary Status
0 Hisila 2019-11-20 200 Junior
1 Shristi 2020-01-02 400 Senior
2 Zeppy 2020-02-05 300 Junior
3 Alina 2020-03-10 500 Senior
4 Jerry 2020-04-16 600 Senior
5 Kevin 2020-05-01 300 Junior
Es erzeugt eine neue Spalte Status
in df
, deren Wert Senior
ist, wenn das Gehalt größer oder gleich 400 ist, oder Junior
andernfalls.
NumPy
-Methoden zum Erstellen neuer DataFrame
-Spalten auf der Grundlage eines gegebenen Zustands in Pandas
Wir können auch NumPy-Methoden verwenden, um eine DataFrame
-Spalte basierend auf gegebenen Bedingungen in Pandas zu erstellen. Zu diesem Zweck können wir die np.where()
Methode und die np.select()
Methode verwenden.
np.where()
Methode
np.where()
nimmt die Bedingung als Eingabe und gibt die Indizes der Elemente zurück, die die gegebene Bedingung erfüllen. Wir können diese Methode verwenden, um eine DataFrame-Spalte basierend auf gegebenen Bedingungen in Pandas zu erstellen, wenn wir nur eine Bedingung haben.
import pandas as pd
import numpy as np
list_of_dates = [
"2019-11-20",
"2020-01-02",
"2020-02-05",
"2020-03-10",
"2020-04-16",
"2020-05-01",
]
employees = ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry", "Kevin"]
salary = [200, 400, 300, 500, 600, 300]
df = pd.DataFrame(
{"Name": employees, "Joined date": pd.to_datetime(list_of_dates), "Salary": salary}
)
df["Status"] = np.where(df["Salary"] >= 400, "Senior", "Junior")
print(df)
Ausgabe:
Name Joined date Salary Status
0 Hisila 2019-11-20 200 Junior
1 Shristi 2020-01-02 400 Senior
2 Zeppy 2020-02-05 300 Junior
3 Alina 2020-03-10 500 Senior
4 Jerry 2020-04-16 600 Senior
5 Kevin 2020-05-01 300 Junior
np.where(condition, x, y)
gibt x
zurück, wenn die Bedingung erfüllt ist, andernfalls y
.
Der obige Code erzeugt eine neue Spalte Status
in df
, deren Wert Senior
ist, wenn die gegebene Bedingung erfüllt ist; andernfalls wird der Wert auf Junior
gesetzt.
Methode np.select()
np.where()
nimmt Bedingungsliste und Auswahlliste als Eingabe und gibt ein Array zurück, das je nach Bedingung aus Elementen der Auswahlliste aufgebaut ist. Wir können diese Methode verwenden, um eine DataFrame-Spalte basierend auf gegebenen Bedingungen in Pandas zu erstellen, wenn wir zwei oder mehr Bedingungen haben.
import pandas as pd
import numpy as np
list_of_dates = [
"2019-11-20",
"2020-01-02",
"2020-02-05",
"2020-03-10",
"2020-04-16",
"2020-05-01",
]
employees = ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry", "Kevin"]
salary = [200, 400, 300, 500, 600, 300]
df = pd.DataFrame(
{"Name": employees, "Joined date": pd.to_datetime(list_of_dates), "Salary": salary}
)
conditionlist = [
(df["Salary"] >= 500),
(df["Salary"] >= 300) & (df["Salary"] < 300),
(df["Salary"] <= 300),
]
choicelist = ["High", "Mid", "Low"]
df["Salary_Range"] = np.select(conditionlist, choicelist, default="Not Specified")
print(df)
Ausgabe:
Name Joined date Salary Salary_Range
0 Hisila 2019-11-20 200 Low
1 Shristi 2020-01-02 400 black
2 Zeppy 2020-02-05 300 Low
3 Alina 2020-03-10 500 High
4 Jerry 2020-04-16 600 High
5 Kevin 2020-05-01 300 Low
Wenn hier die erste Bedingung in der conditionlist
für eine Zeile erfüllt ist, wird der Wert der Spalte Salary_Range
für diese spezifische Zeile auf das erste Element in der choicelist
gesetzt. Andere Bedingungen in der conditionlist
sind ähnlich. Wenn keine der Bedingungen in der conditionlist
erfüllt ist, wird der Wert der Spalte Salary_Range
für diese Zeile auf den Wert des Standard
-Parameters in der np.where()
-Methode gesetzt, z. B. Not Specified
.
pandas.DataFrame.apply
zum Erstellen neuer DataFrame
-Spalten auf der Grundlage einer gegebenen Bedingung in Pandas
pandas.DataFrame.apply
gibt einen DataFrame zurück
als Ergebnis der Anwendung der gegebenen Funktion entlang der gegebenen Achse des DataFrame.
Die Syntax:
DataFrame.apply(self, func, axis=0, raw=False, result_type=None, args=(), **kwds)
func
stellt die anzuwendende Funktion dar.
axis
steht für die Achse, entlang der die Funktion angewendet wird. Wir können axis=1
oder axis = 'columns'
verwenden, um die Funktion auf jede Zeile anzuwenden.
Wir können diese Methode verwenden, um die Bedingung zu überprüfen und Werte für jede Zeile einer neuen Spalte zu setzen.
import pandas as pd
import numpy as np
list_of_dates = [
"2019-11-20",
"2020-01-02",
"2020-02-05",
"2020-03-10",
"2020-04-16",
"2020-05-01",
]
employees = ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry", "Kevin"]
salary = [200, 400, 300, 500, 600, 300]
df = pd.DataFrame(
{"Name": employees, "Joined date": pd.to_datetime(list_of_dates), "Salary": salary}
)
def set_values(row, value):
return value[row]
map_dictionary = {200: "Low", 300: "LOW", 400: "MID", 500: "HIGH", 600: "HIGH"}
df["Salary_Range"] = df["Salary"].apply(set_values, args=(map_dictionary,))
print(df)
Ausgabe:
Name Joined date Salary Salary_Range
0 Hisila 2019-11-20 200 Low
1 Shristi 2020-01-02 400 MID
2 Zeppy 2020-02-05 300 LOW
3 Alina 2020-03-10 500 HIGH
4 Jerry 2020-04-16 600 HIGH
5 Kevin 2020-05-01 300 LOW
Hier definieren wir eine Funktion set_values()
, die mit df.apply()
auf jede Zeile angewendet wird. Die Funktion setzt den Wert jeder Zeile der Spalte Salary_Range
in Abhängigkeit vom Wert der Spalte Salary
dieser Zeile. Wir machen map_dictionary
, um den Wert der Spalte Salary_Range
für eine Zeile zuzuweisen, die ihren Wert in der Spalte Salary
hat. Diese Methode bietet uns viel mehr Flexibilität, wenn wir eine große Anzahl von Optionen für die neue Spalte haben.
pandas.Series.map()
zum Erstellen neuer DataFrame
-Spalten auf der Grundlage einer gegebenen Bedingung in Pandas
Wir könnten auch pandas.Series.map()
verwenden, um neue DataFrame
-Spalten basierend auf einer gegebenen Bedingung in Pandas zu erstellen. Diese Methode wird elementweise für Series
angewendet und bildet Werte von einer Spalte auf die andere ab, basierend auf der Eingabe, die ein Dictionary, eine Funktion oder eine Series
sein könnte.
import pandas as pd
import numpy as np
list_of_dates = [
"2019-11-20",
"2020-01-02",
"2020-02-05",
"2020-03-10",
"2020-04-16",
"2020-05-01",
]
employees = ["Hisila", "Shristi", "Zeppy", "Alina", "Jerry", "Kevin"]
salary = [200, 400, 300, 500, 600, 300]
df = pd.DataFrame(
{"Name": employees, "Joined date": pd.to_datetime(list_of_dates), "Salary": salary}
)
map_dictionary = {200: "Low", 300: "LOW", 400: "MID", 500: "HIGH", 600: "HIGH"}
df["Salary_Range"] = df["Salary"].map(map_dictionary)
print(df)
Ausgabe:
Name Joined date Salary Salary_Range
0 Hisila 2019-11-20 200 Low
1 Shristi 2020-01-02 400 MID
2 Zeppy 2020-02-05 300 LOW
3 Alina 2020-03-10 500 HIGH
4 Jerry 2020-04-16 600 HIGH
5 Kevin 2020-05-01 300 LOW
Es wird eine neue Spalte Salary_Range
erstellt und die Werte jeder Zeile der Spalte in Abhängigkeit von den Schlüssel-Werte-Paaren in map_dictionary
gesetzt.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedInVerwandter Artikel - Pandas DataFrame Column
- Wie man Pandas DataFrame-Spaltenüberschriften als Liste erhält
- Pandas DataFrame-Spalte löschen
- Wie man DataFrame-Spalte in Datetime in Pandas konvertiert
- So erhalten Sie die Summe der Pandas-Spalte
- Wie man die Reihenfolge der Pandas DataFrame-Spalten ändert
- Wie man eine DataFrame-Spalte in eine Zeichenkette in Pandas konvertiert