Если важна производительность, создайте новый столбец, заполненный сравниваемыми значениями, конвертированными в integer
с, поэтому для подсчета используется агрегация sum
:
df = (df.assign(new = df['Age'].gt(60).astype(int))
.groupby(['City'])
.agg(Mean= ("Age" , "mean"), People_Above_60= ('new',"sum")))
print (df)
Mean People_Above_60
City
A 38.000000 0
B 60.333333 2
Ваше решение должно быть изменено с помощью сравниваемых значений и sum
, но медленно, если много групп или больших DataFrame
:
def count_people_above_60(age):
return (age > 60).sum()
df = (df.groupby(['City']).agg(Mean=("Age" , "mean"),
People_Above_60=('Age',count_people_above_60)))
print (df)
Mean People_Above_60
City
A 38.000000 0
B 60.333333 2