У меня есть Pandas DataFrame, в котором есть товары, действия, количество и цена. Если действие «ПРОДАВАТЬ», мне нужно учитывать цену 0 для продукта, а также инвертировать количество.
Что я пробовал:
import pandas as pd
def my_function(df):
kwargs = {
"quantity": lambda x: -x["quantity"] if "SELL" in str(x["action"]) else x["quantity"],
"price (usd)": lambda x: 0 if "SELL" in str(x["action"]) else x["price (usd)"],
}
return df.assign(**kwargs)
input_df = pd.DataFrame({"product": ["APPLE", "APPLE", "BANANA"],
"action": [" SELL ", " BUY ", " SELL "],
"quantity": [1, 2, 3],
"price (usd)": [3, 5, 8],
})
result_df = my_function(input_df)
expected_df = pd.DataFrame({"product": ["APPLE", "APPLE", "BANANA"],
"action": [" SELL ", " BUY ", " SELL "],
"quantity": [-1, 2, -3],
"price (usd)": [0, 5, 0],
})
Каким-то образом условия в моем Лямбда-выражения всегда возвращают True, и я также думаю, что это может быть более простым способом сделать это. Есть идеи?