2017-01-04 6 views
0

У меня есть набор данных, как это:Панды Dataframe, агрегировать и поместить данные в следующей колонке

Country Name  Match Result 
US  Martin Win  3 
US  Martin Lose 1 
US  Martin Draw 5 
UK  Luther Win  5 
UK  Luther Draw 3 

Я хотел бы добавить еще два столбца с результатом суммы от Win, Lose и рисовать, и процент каждого матча следующим образом:

Country Name  Match Result All Percentage 
US  Martin Win  3  8 0.375 
US  Martin Lose 1  8 0.125 
US  Martin Draw 5  8 0.625 
UK  Luther Win  6  10 0.6 
UK  Luther Draw 4  10 0.4 

Я уже пробовал использовать groupby и получил результат для общего совпадения размеров. Однако я не знаю, как это сделать в следующей колонке.

Спасибо

+3

Не следует ли 'All' столбец для' 'Martin' быть 9', а не' 8' (5 + 3 + 1)? – blacksite

+0

Да, моя ошибка, это должно быть (5 + 1 + 2) .. спасибо –

ответ

1

IIUC вам нужно GroupBy.transform, образец DataFrame был изменен:

df['All'] = df.groupby(['Country','Name'])['Result'].transform('sum') 
df['Percentage'] = df.Result.div(df.All) 
print (df) 
    Country Name Match Result All Percentage 
0  US Martin Win  2 8  0.250 
1  US Martin Lose  1 8  0.125 
2  US Martin Draw  5 8  0.625 
3  UK Luther Win  6 10  0.600 
4  UK Luther Draw  4 10  0.400 
+0

Если бы мой ответ был полезным, не забудьте [принять] (http://meta.stackexchange.com/a/5235/295067) Это. Благодарю. – jezrael

 Смежные вопросы

  • Нет связанных вопросов^_^