2016-05-26 8 views
1

Я хотел бы взять df ниже, группировать уникальные значения вместе 'USER', 'TASK' и 'STATIC_VALUE'. Я могу сделать это с помощью groupby(), но у меня возникли проблемы с добавлением столбца «TASK_COUNT» и «TOTALS». Столбец «TOTALS» будет умножать «STATIC_VALUE» * «TASK_COUNT». Я пробовал несколько вариантов groupby(), transform(), size(), и я не могу туда попасть. Предложения? Спасибо!Как вернуть счетчик событий из столбца и умножить эти значения на другой столбец значений?

Dataframe:

USER TASK STATIC_VALUE 
1 USER1 TASK2 30 
2 USER2 TASK7 12 
3 USER5 TASK4 9 
4 USER12 TASK2 30 
5 USER2 TASK3 10 
6 USER1 TASK2 30 
7 USER5 TASK7 12 
8 USER1 TASK3 10 
9 USER2 TASK3 10 

Эта часть получает меня близко:

>>> df.groupby(['USER','TASK','STATIC_VALUE']).size() 

USER TASK STATIC_VALUE  
USER1 TASK2 30    2 
     TASK3 10    1 
USER2 TASK7 12    1 
     TASK3 10    2 
USER5 TASK4 9    1 
     TASK7 12    1 
USER12 TASK2 30    1 

Ожидаемый результат:

USER TASK STATIC_VALUE TASK_COUNT TOTAL 
USER1 TASK2 30    2   60 
     TASK3 10    1   10 
USER2 TASK7 12    1   12 
     TASK3 10    2   20 
USER5 TASK4 9    1   9 
     TASK7 12    1   12 
USER12 TASK2 30    1   30 

ответ

2

Использование GroupBy.size:

df1 = df.groupby(['USER','TASK', 'STATIC_VALUE']).size().reset_index(name='TASK_COUNT') 
df1['TOTAL'] = df1['TASK_COUNT'] * df1['STATIC_VALUE'] 
print (df1) 
    USER TASK STATIC_VALUE TASK_COUNT TOTAL 
0 USER1 TASK2   30   2  60 
1 USER1 TASK3   10   1  10 
2 USER12 TASK2   30   1  30 
3 USER2 TASK3   10   2  20 
4 USER2 TASK7   12   1  12 
5 USER5 TASK4    9   1  9 
6 USER5 TASK7   12   1  12 
+0

Вот и все! Спасибо огромное! Хотя, разочарование, чтобы знать, что я был так близок к тому, чтобы понять это самостоятельно ... lol :) – Mike

+0

Рад может вам помочь! – jezrael