62
задан 22 November 2017 в 03:18

3 ответа

попробуйте это:

In [110]: (df.groupby('Company Name')
   .....:    .agg({'Organisation Name':'count', 'Amount': 'sum'})
   .....:    .reset_index()
   .....:    .rename(columns={'Organisation Name':'Organisation Count'})
   .....: )
Out[110]:
          Company Name   Amount  Organisation Count
0  Vifor Pharma UK Ltd  4207.93                   5

или если Вы не хотите сбрасывать индекс:

df.groupby('Company Name')['Amount'].agg(['sum','count'])

или

df.groupby('Company Name').agg({'Amount': ['sum','count']})

Демонстрация:

In [98]: df.groupby('Company Name')['Amount'].agg(['sum','count'])
Out[98]:
                         sum  count
Company Name
Vifor Pharma UK Ltd  4207.93      5

In [99]: df.groupby('Company Name').agg({'Amount': ['sum','count']})
Out[99]:
                      Amount
                         sum count
Company Name
Vifor Pharma UK Ltd  4207.93     5
110
ответ дан 31 October 2019 в 14:02

Если у Вас есть много столбцов, и только один отличается, Вы могли бы сделать:

In[1]: grouper = df.groupby('Company Name')
In[2]: res = grouper.count()
In[3]: res['Amount'] = grouper.sum()['Amount']
In[4]: res
Out[4]:
                      Organisation Name   Amount
Company Name                                   
Vifor Pharma UK Ltd                  5  4207.93

Примечание можно затем переименовать столбец Organisation Name, как Вы желаете.

1
ответ дан 31 October 2019 в 14:02
df.groupby('Company Name').agg({'Organisation name':'count','Amount':'sum'})\
    .apply(lambda x: x.sort_values(['count','sum'], ascending=False))
-1
ответ дан 31 October 2019 в 14:02

Другие вопросы по тегам:

Похожие вопросы: