Разделите 2 столбца и создайте новый столбец с результатами - PullRequest
0 голосов
/ 23 октября 2018

У меня есть фрейм данных со столбцами:

User_id PQ_played PQ_offered
 1           5        15
 2          12        75
 3          25        50

Мне нужно разделить PQ_played на PQ_offered, чтобы вычислить% сыгранных игр.Вот что я пробовал до сих пор:

new_df['%_PQ_played'] = df.groupby('User_id').((df['PQ_played']/df['PQ_offered'])*100),as_index=True

Я знаю, что я ужасно неправ.

Ответы [ 3 ]

0 голосов
/ 23 октября 2018

Это намного проще, чем вы думаете.

df['%_PQ_played'] = df['PQ_played'] / df['PQ_offered'] * 100

         PQ_offered  PQ_played  %_PQ_played
User_id                                     
1                15          5     33.333333
2                75         12     16.000000
3                50         25     50.000000
0 голосов
/ 23 октября 2018

Я полностью согласен с @mVChr и думаю, что вы слишком усложняете то, что вам нужно сделать.Если вы просто пытаетесь добавить дополнительный столбец, его ответ будет точным.Если вам действительно нужно groupby, стоит отметить, что это обычно используется для агрегирования, например, sum(), count() и т. Д. Если, например, у вас было несколько записей с неуникальными значениями в User_id столбец, то вы можете создать дополнительный столбец, используя

df['%_PQ_played'] = df['PQ_played'] / df['PQ_offered'] * 100

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

new_df = df.groupby('User_id', as_index=False)['%_PQ_played'].mean()

Это даст (числа произвольны)

   User_id  %_PQ_played
0        1    52.777778
1        2    29.250000
2        3    65.000000
0 голосов
/ 23 октября 2018

Вы можете использовать лямбда-функции

df.groupby('User_id').apply(lambda x: (x['PQ_played']/x['PQ_offered'])*100)\
.reset_index(1, drop = True).reset_index().rename(columns = {0 : '%_PQ_played'})

Вы получаете

    User_id %_PQ_played
0   1       33.333333
1   2       16.000000
2   3       50.000000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...