Сумма столбцов с условием в python

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

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, если нет.

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

Спасибо

Каковы ожидаемые результаты ваших выборочных данных? Или какой ответ правильный?

jezrael 28.05.2019 11:11
1
1
48
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Использовать:

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
Ответ принят как подходящий

На основе:

sum of line_amount of a command

Используйте 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

спасибо, anky_91, но почему у вас с @jezrael разные результаты? :о

cyrinepersonne 28.05.2019 10:49

@cyrinepersonne другой результат, который Jez вычисляет построчно, а этот вычисляется на основе суммы суммы строки, взяв id_command в качестве группы.

anky 28.05.2019 10:50

Я считаю, что ваш ответ правильный, но лучше дождитесь разъяснения OP.

jezrael 28.05.2019 11:17

Другие вопросы по теме