рассчитать соотношение с пандами - PullRequest
0 голосов
/ 18 февраля 2019

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

id-customer      status     
1                 Won
1                 Won
2                 Won
2                 Won
3                 Not won

, и я хотел бы добавить новые столбцы, которые представляют собой выигрыш, рассчитываемый как: Число выигранных делится на общее число, сгруппированное по id-customer.

Итак, у меня должен быть такой фрейм данных:

id-customer      status           winrate
1                 Won             1 (2/2)
1                 Won             1  (2/2)
2                 Won             1 (2/2)
2                 Won             1   (2/2)
3                 Not won         0  (0/1)

Я пытаюсь так:

df_winrate=df.groupby(['id-customer'],as_index=False)['status'].sum()

Но это не сработало

МожетВы помогаете мне рассчитать колонку Winrate, пожалуйста?

спасибо

1 Ответ

0 голосов
/ 18 февраля 2019

Используйте groupby и просто рассчитайте соотношение sum к size, используя transform для трансляции результатов в исходный размер.

g = df.status.eq('Won').groupby(df['id-customer'])
g.transform('sum')/g.transform('size')

0    1.0
1    1.0
2    1.0
3    1.0
4    0.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...