сумма столбцов с условием в питоне - PullRequest
1 голос
/ 28 мая 2019

У меня есть фрейм данных

id_command  command_status  stage   line_amount global_amount
61  ZeFMAA1 Pending     582.96  582.96
61  UbUjNAAV    Pending     70481.00    582.96
945 0bR8hEQAS   Pending     6400.00 12800.00

Я хотел бы добавить новый столбец «решение», который является логическим значением (истина или ложь) Истина, если значение global_amount команды превышает 30% отсумма line_amount команды и false, если нет.

Можете ли вы помочь мне сделать это?

Спасибо

Ответы [ 2 ]

1 голос
/ 28 мая 2019

На основании:

сумма line_amount команды

Используйте df.groupby() для группировки по id_command и transform, чтобы получить сумму, распределенную по каждой строке. Затем умножьте на 0.3 и сравните на series.gt():

df['decision']=df.global_amount.gt(df.groupby('id_command').line_amount.transform('sum')*0.3)
print(df)

   id_command command_status    stage  line_amount  global_amount  decision
0          61        ZeFMAA1  Pending       582.96         582.96     False
1          61       UbUjNAAV  Pending     70481.00         582.96     False
2         945      0bR8hEQAS  Pending      6400.00       12800.00      True
1 голос
/ 28 мая 2019

Использование:

df['decision'] = df['global_amount'].gt(df['line_amount'].mul(.3))
print (df)
   id_command command_status    stage  line_amount  global_amount  decision
0          61        ZeFMAA1  Pending       582.96         582.96      True
1          61       UbUjNAAV  Pending     70481.00         582.96     False
2         945      0bR8hEQAS  Pending      6400.00       12800.00      True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...