我有一個看起來像這樣的現有 df:
Current Price Contract Cost GP % New Contract Cost
30.19 16.01 .47 16.75
84.22 60.90 .28 57.12
95.16 58.54 .39 57.12
我想在 df 中添加一個名為“新價格”的新列,這將是根據新合同成本更新的專案價格,保持 GP % 不變。
如果我要在紙上解決這個問題,我會做GP % = (x - New Contract Cost) / x 其中 x 是新價格。
來自 df 的示例:.47 = (x -16.75)/x
x = ~31.60
所以在這個例子中,第一行的“新價格”是 31.60
我在資料框中有大約 500 行,不想手動計算所有行。
我將如何為此構建代碼?我對此很陌生,真的不知道從哪里開始。我從事銷售作業,如果我們保持 GP % 不變,我希望能夠根據新合同成本量化價格變化。提前致謝。
uj5u.com熱心網友回復:
嘗試使用 pandas 內在資料對齊,無需回圈也無需使用 lambda 函式:
df['New Price'] = df['New Contract Cost']/(1-df['GP %'])
輸出:
Current Price Contract Cost GP % New Contract Cost New Price
0 30.19 16.01 0.47 16.75 31.603774
1 84.22 60.90 0.28 57.12 79.333333
2 95.16 58.54 0.39 57.12 93.639344
uj5u.com熱心網友回復:
最好以下列方式重新排列您的公式。
新價格 = - (新合約成本 / (GP % - 1)),其中 GP % != 1。
然后你可以在 Python 中使用以下代碼實作它:
import pandas as pd
df = pd.DataFrame({"Current Price":[30.19,84.22,95.16],
"Contract Cost":[16.01,60.90,58.54],
"GP %":[0.47,0.28,0.39],
"New Contract Cost":[16.75,57.12,57.12]})
df["New Price"] = -(df["New Contract Cost"] / (df["GP %"] - 1))
Current Price Contract Cost GP % New Contract Cost New Price
0 30.19 16.01 0.47 16.75 31.603774
1 84.22 60.90 0.28 57.12 79.333333
2 95.16 58.54 0.39 57.12 93.639344
uj5u.com熱心網友回復:
df['New Price'] = df['New Contract Cost'] / (1 - df['GP%'].astype(float))
應根據您當前的值在 df 中創建一個“新價格”列。這只是將代數簡化為僅包含等式左側的“新價格”變數。這簡化了代數,因此“新價格”單獨出現在等式的左側,允許解決方案的資料幀實作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/441559.html