Pandas crea colonne basate su altre colonne

Suraj Joshi 30 gennaio 2023
  1. Crea nuove colonne in Pandas DataFrame in base ai valori di altre colonne utilizzando l’operazione Element-Wise
  2. Crea nuove colonne in Pandas DataFrame in base ai valori di altre colonne utilizzando il metodo DataFrame.apply()
Pandas crea colonne basate su altre colonne

Questo tutorial introdurrà come possiamo creare nuove colonne in Pandas DataFrame in base ai valori di altre colonne nel DataFrame applicando una funzione a ogni elemento di una colonna o usando il metodo DataFrame.apply().

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)

Produzione:

    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

Useremo il DataFrame visualizzato sopra nello snippet di codice per dimostrare come possiamo creare nuove colonne in Pandas DataFrame in base ai valori di altre colonne nel DataFrame.

Crea nuove colonne in Pandas DataFrame in base ai valori di altre colonne utilizzando l’operazione Element-Wise

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")

Produzione:

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 

Calcola il prezzo finale di ogni prodotto sottraendo il valore dell’importo dello sconto dalla colonna Actual Price nel DataFrame. Quindi assegna la Series dei valori del prezzo finale alla colonna Final Price del DataFrame items_df.

Crea nuove colonne in Pandas DataFrame in base ai valori di altre colonne utilizzando il metodo 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")

Produzione:

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 

Applica la funzione lambda definita nel metodo apply() a ciascuna riga del DataFrame items_df e infine assegna la serie di risultati alla colonna Final Price del DataFrame items_df.

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Articolo correlato - Pandas DataFrame Column