Попробуйте
df.groupby(['EMP_NAME'])['integer_transaction'].agg(["count", "sum"])
count sum
EMP_NAME
a 2 1
b 1 0
Если вы действительно хотите, вы можете переименовать столбцы с помощью дополнительного .rename("count": "Frequency_count", "sum": "Frequency_sum")
.
Просто для справки, следующее также прекрасно работает:
x=df.groupby(['EMP_NAME'])['integer_transaction'].agg({'Frequency_count': "count", 'Frequency_Sum': np.sum})
x
__main__:1: FutureWarning: using a dict on a Series for aggregation
is deprecated and will be removed in a future version
Out[26]:
Frequency_count Frequency_Sum
EMP_NAME
a 2 1
b 1 0
Обратите внимание, как цитируется count
.
x=df.groupby(['EMP_NAME'])['integer_transaction'].agg({'Frequency_count': np.size, 'Frequency_Sum': np.sum})
x
__main__:1: FutureWarning: using a dict on a Series for aggregation
is deprecated and will be removed in a future version
Out[27]:
Frequency_count Frequency_Sum
EMP_NAME
a 2 1
b 1 0
Полученные предупреждения просто говорят о том, что эта функция будет удалена в будущем, поэтому их, вероятно, не следует использовать.Тем не менее, они дают правильный ответ.
Чтобы переместить индекс в столбец, попробуйте
df.groupby(['EMP_NAME'])['integer_transaction'].agg(["count", "sum"]).reset_index()
EMP_NAME count sum
0 a 2 1
1 b 1 0