Pandas Erstellen von Spalten basierend auf anderen Spalten

Suraj Joshi 30 Januar 2023
  1. Neue Spalten in Pandas DataFrame basierend auf den Werten anderer Spalten mit der elementweisen Operation erzeugen
  2. Erzeugen neuer Spalten im Pandas DataFrame basierend auf den Werten anderer Spalten mit der Methode DataFrame.apply()
Pandas Erstellen von Spalten basierend auf anderen Spalten

In diesem Tutorial wird vorgestellt, wie wir neue Spalten in Pandas DataFrame basierend auf den Werten anderer Spalten im DataFrame erstellen können, indem wir eine Funktion auf jedes Element einer Spalte anwenden oder die Methode DataFrame.apply() verwenden.

import pandas as pd

items_df = pd.DataFrame(
    {
        "Id": [302, 504, 708, 103, 343, 565],
        "Name": ["Watch", "Camera", "Phone", "Shoes", "Laptop", "Bed"],
        "Cost": [300, 400, 350, 100, 1000, 400],
        "Discount(%)": [10, 15, 5, 0, 2, 7],
    }
)

print(items_df)

Ausgabe:

    Id    Name  Cost  Discount(%)
0  302   Watch   300           10
1  504  Camera   400           15
2  708   Phone   350            5
3  103   Shoes   100            0
4  343  Laptop  1000            2
5  565     Bed   400            7

Anhand des oben gezeigten DataFrame demonstrieren wir im Codeschnipsel, wie wir neue Spalten im Pandas DataFrame auf Basis der Werte anderer Spalten im DataFrame erstellen können.

Neue Spalten in Pandas DataFrame basierend auf den Werten anderer Spalten mit der elementweisen Operation erzeugen

import pandas as pd

items_df = pd.DataFrame(
    {
        "Id": [302, 504, 708, 103, 343, 565],
        "Name": ["Watch", "Camera", "Phone", "Shoes", "Laptop", "Bed"],
        "Actual Price": [300, 400, 350, 100, 1000, 400],
        "Discount(%)": [10, 15, 5, 0, 2, 7],
    }
)

print("Initial DataFrame:")
print(items_df, "\n")

items_df["Final Price"] = items_df["Actual Price"] - (
    (items_df["Discount(%)"] / 100) * items_df["Actual Price"]
)


print("DataFrame after addition of new column")
print(items_df, "\n")

Ausgabe:

Initial DataFrame:
    Id    Name  Actual Price  Discount(%)
0  302   Watch           300           10
1  504  Camera           400           15
2  708   Phone           350            5
3  103   Shoes           100            0
4  343  Laptop          1000            2
5  565     Bed           400            7 

DataFrame after addition of new column
    Id    Name  Actual Price  Discount(%)  Final Price
0  302   Watch           300           10        270.0
1  504  Camera           400           15        340.0
2  708   Phone           350            5        332.5
3  103   Shoes           100            0        100.0
4  343  Laptop          1000            2        980.0
5  565     Bed           400            7        372.0 

Es berechnet den Endpreis jedes Produkts, indem es den Wert des Rabattbetrags von der Spalte Actual Price im DataFrame subtrahiert. Dann weist es die Series der Endpreiswerte der Spalte Final Price des DataFrame items_df zu.

Erzeugen neuer Spalten im Pandas DataFrame basierend auf den Werten anderer Spalten mit der Methode DataFrame.apply()

import pandas as pd

items_df = pd.DataFrame(
    {
        "Id": [302, 504, 708, 103, 343, 565],
        "Name": ["Watch", "Camera", "Phone", "Shoes", "Laptop", "Bed"],
        "Actual_Price": [300, 400, 350, 100, 1000, 400],
        "Discount_Percentage": [10, 15, 5, 0, 2, 7],
    }
)

print("Initial DataFrame:")
print(items_df, "\n")

items_df["Final Price"] = items_df.apply(
    lambda row: row.Actual_Price - ((row.Discount_Percentage / 100) * row.Actual_Price),
    axis=1,
)

print("DataFrame after addition of new column")
print(items_df, "\n")

Ausgabe:

Initial DataFrame:
    Id    Name  Actual_Price  Discount_Percentage
0  302   Watch           300                   10
1  504  Camera           400                   15
2  708   Phone           350                    5
3  103   Shoes           100                    0
4  343  Laptop          1000                    2
5  565     Bed           400                    7 

DataFrame after addition of new column
    Id    Name  Actual_Price  Discount_Percentage  Final Price
0  302   Watch           300                   10        270.0
1  504  Camera           400                   15        340.0
2  708   Phone           350                    5        332.5
3  103   Shoes           100                    0        100.0
4  343  Laptop          1000                    2        980.0
5  565     Bed           400                    7        372.0 

Die in der Methode apply() definierte Lambda-Funktion wird auf jede Zeile des DataFrame items_df angewendet und die Ergebnisreihe schließlich der Spalte Final Price des DataFrame items_df zugewiesen.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Verwandter Artikel - Pandas DataFrame Column