Изменить значение элемента с учетом флага

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

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

    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, но, похоже, ничего не работает.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
28
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

спасибо, это было намного эффективнее, чем любая из моих попыток, как я могу удалить заголовок выиграл/потерял в верхнем левом углу

Tom Walsh 09.04.2019 00:21

@TomWalsh Ты можешь бежать result.columns.name = None

cs95 09.04.2019 00:22

Также оказалось, что мой исходный код сработал бы, однако в моем csv было дополнительное пустое пространство вокруг значений, что сбрасывало мои поиски.

Tom Walsh 09.04.2019 00:24

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