как получить средние значения в столбцах для каждого значения в другом столбце

#python #pandas

#python #pandas

Вопрос:

У меня есть фрейм данных, который выглядит следующим образом:

 import pandas as pd

df = pd.DataFrame({'Date':[2019-08, 2019-08, 2019-09, 2019-09, 2019-10, 2019-10], 'Name':['A','B','A','C', 'A', 'B'], 'math':[100,90,69,80,0,70], 'science':[100,90,0,80,92,95]})

df['Date'] = pd.to_datetime(df['Date'])
  

Я хочу перебрать данные и найти оценки по математике и естественным наукам на человека в месяц.
Мой желаемый результат должен выглядеть следующим образом:

 df = pd.DataFrame({'Name':['A','B','C'], 'math':[56.3333, 80, 69], 'science':[64, 92.5, 80]})
  

Чтобы было более понятно, вот шаги, которые я хочу предпринять.

 1) get a Name (ex. A) 
2) get math grades for that person (100, 69, 0)
3) calculate the average (56.333)
4) get science grades for that person (100, 0, 92) 
5) calculate the average (64)
6) repeat the steps for every name (b and c)
  

Комментарии:

1. df.groupby('Name')[['math', 'science']].mean() ?

Ответ №1:

Сгруппируйте их по «имени» и вычислите среднее значение для каждого

 df.groupby('Name')[['math','science']].mean()
    math    science
Name        
A   56.333333   64.0
B   80.000000   92.5
C   80.000000   80.0
  

Ответ №2:

вы можете использовать функцию ‘groupby’:

 grp_grade=df.groupby(by='Name')

grp_grade.mean()
Out[17]: 
           math  science
Name                    
A     56.333333     64.0
B     80.000000     92.5
C     80.000000     80.0