Search code examples
pythondataframeconcatenation

Add data to DataFrame by function


thats my function:

import pandas as pd


shopping_list = pd.DataFrame()
shopping_list = shopping_list.assign(Order=0, Type=0, Price=0, Quantity=0)


def add_item(order: str, type_transaction: str, price: float, quantity: int, shopping_list=shopping_list):
    new_item_data = pd.DataFrame({"Order": [order],
                                  "Type": [type_transaction],
                                  "Price": [price],
                                  "Quantity": [quantity]})
    return pd.concat([shopping_list, new_item_data], ignore_index=True)


add_item(order="Buy", type_transaction="Add", price=20.0, quantity=100)
add_item(order="Sell", type_transaction="Add", price=25.0, quantity=200)

print(shopping_list)

Output:

Empty DataFrame
Columns: [Order, Type, Price, Quantity]
Index: []

What i should do to add this items into my dataframe ? bcz they vanish and idk why


Solution

  • You can improve the performance of the operation by generating a list of dictionary objects and performing a single call to pd.concat(). Appending data on a row-by-row basis is never performant.

    import pandas as pd
    
    data = [{"Order": "Buy", "Type": "Add", "Price": 20.0, "Quantity": 100},
            {"Order": "Sell", "Type": "Add", "Price": 25.0, "Quantity": 200}]
    
    shopping_list = pd.DataFrame()
    shopping_list = shopping_list.assign(Order=0, Type=0, Price=0, Quantity=0)
    shopping_list = pd.concat([shopping_list, pd.DataFrame(data)], ignore_index=True)