Изменить значение элемента с учетом флага - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть фрейм данных, в котором содержатся ставки на лошадей, причем каждая строка является новой ставкой.Каждая ставка имеет несколько атрибутов, включая местоположение, имя лошади, выигрыши / проигрыши и т. Д. Проблема заключается в том, что выигрыши от ставок даны в виде положительного целого числа, а атрибут флага указывает, является ли это выигрышем или проигрышем.

Это предоставленный фрейм данных:

    Race Course                 Horse  Year  Month  Date  Amount Won/Lost
0       Aintree               Red Rum  2017      5    12   11.58      won
1   Punchestown               Camelot  2016     12    22  122.52      won
2       Sandown        Beef of Salmon  2016     11    17   20.00     lost
3           Ayr              Corbiere  2016     11     3   25.00     lost
4    Fairyhouse               Red Rum  2016     12     2   65.75      won
5           Ayr               Camelot  2017      3    11   12.05      won
6       Aintree         Hurricane Fly  2017      5    12   11.58      won
7   Punchestown        Beef or Salmon  2016     12    22  112.52      won
8       Sandown              Aldaniti  2016     11    17   10.00     lost
9           Ayr   Henry the Navigator  2016     11     1   15.00     lost
10   Fairyhouse               Jumanji  2016     10     2   65.75      won
11          Ayr           Came Second  2017      3    11   12.05      won
12      Aintree                Murder  2017      5    12    5.00    lost
13  Punchestown           King Arthur  2016      6    22   52.52      won
14      Sandown         Filet of Fish  2016     11    17   20.00     lost
15          Ayr                Denial  2016     11     3   25.00     lost
16   Fairyhouse          Don't Gamble  2016     12    12  165.75      won
17          Ayr               Ireland  2017      1    11   22.05      won

И мне нужно создать фрейм данных следующего формата:

Year        Total Won   Total Lost
2016        €123.45     €678.90
2017        €543.21     €987.60

Я пытался выполнить итерацию постолбцы, а также попытался использовать функцию where, но, похоже, ничего не получилось.

1 Ответ

4 голосов
/ 09 апреля 2019

Используйте groupby, sum, а затем снимите стек с результата:

df.groupby(['Year', 'Won/Lost'])['Amount'].sum().unstack(-1).add_prefix('total_')

Won/Lost  total_lost  total_won
Year                           
2016           115.0     584.81
2017             5.0      69.31
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...