Создать новый столбец в кадре данных pandas, используя оператор if для другого столбца - PullRequest
0 голосов
/ 04 октября 2018

Мне нужно вычислить новый столбец в моем фрейме данных, используя if в расчете, но мне не повезло с чем-либо, что я пробовал.Это то, что у меня есть

     OrderNum  Discount  OrderQty  UnitPrice  REMAININGQTY
0    115702       0.0      25.0     145.00          25.0
1    115793       0.0      20.0     823.00          20.0
2    115793       0.0      20.0     823.00          20.0
3    116282       0.0       1.0     699.95           1.0
4    116765       0.0      36.0     295.00           6.0

Это то, что мне нужно.

колонка = PricePer

расчет = IIf(df.discount<>0,df.unitprice-(df.discount/df.orderqty),df.unitprice)

Как мневыполнить это?

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Вы также можете использовать эти 2 утверждения

df.loc[df['Discount'] == 0, 'PricePer'] = df['UnitPrice']
df.loc[df['Discount'] != 0, 'PricePer'] = df['UnitPrice']-df['Discount']/df['OrderQty']

Но если скидка равна нулю, - (discount / orderqty) будет равен нулю, нет, если это необходимо?Поэтому я думаю, что это также может сделать:

df['PricePer'] = df['UnitPrice']-df['Discount']/df['OrderQty']
0 голосов
/ 04 октября 2018

Попробуйте:

df['Price Per'] = pd.np.where(df.Discount != 0, df.UnitPrice - (df.Discount / df.OrderQty), df.UnitPrice)

Вывод:

  OrderNum  Discount  OrderQty  UnitPrice  REMAININGQTY  Price Per
0    115702       0.0      25.0     145.00          25.0     145.00
1    115793       0.0      20.0     823.00          20.0     823.00
2    115793       0.0      20.0     823.00          20.0     823.00
3    116282       0.0       1.0     699.95           1.0     699.95
4    116765       0.0      36.0     295.00           6.0     295.00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...