Я пытаюсь создать новый столбец, который группирует df по Deal
и Month
и применяет процент (9%) к столбцу Amount
. Если все значения Amount
для определенного Deal
в конкретном месяце составляют в сумме до 20 000, тогда примените процент к Amount
; в противном случае, если TYPE
равно MONTHLY
, а индивидуальное Amount
равно не менее 1500, примените процент к Amount
; в противном случае умножьте на 0.
df.groupby(['Deal', 'Month'])["Amount"].apply(
lambda x: x.sum() * 0.09 if x.sum() >= 20000 else (
x * 0.09 if x >= 1500 and x['TYPE'] == 'MONTHLY' else 0
)
)
Это то, что я пытался, но продолжаю получать ошибки, такие как ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
ИЛИ KeyError: ('TYPE', u'occurred at index 0')
и т. Д. Я пытался использовать преобразование вместо применения тоже. Буду очень признателен за любую помощь.
Это если то, на что похож мой сгруппированный DF + Желаемый столбец
Deal TYPE Month Amount Desired Column
0 Com A ANNUAL April 10021.34 0
1 Com A MONTHLY April 35.86 . 0
2 Com B MONTHLY April 11150.05 1,003.50
3 Com B ANNUAL July 661.65 0
4 Com B ANNUAL August 303.63 0
5 Com C ANNUAL April 25624.59 2,306.21
6 Com D ANNUAL June 27309.26 2,457.83
7 Com D ANNUAL July 0.00 0
8 Com D ANNUAL August 0.00 0
9 Com E ANNUAL April 10.65 0
10 Com E MONTHLY May 0.00 0
11 Com E ANNUAL May 18716.70 1,684.5
12 Com E MONTHLY June 0.00 0
13 Com E ANNUAL June 606.49 0
14 Com E MONTHLY July 0.00 0
15 Com E MONTHLY July 8890.17 800.11
16 Com E MONTHLY August 4000 0
17 Com E ANNUAL August 16000 1,800
18 Com E ANNUAL September 2157.34 0
19 Com E ANNUAL October 3025.24 0
DF