Сравнить средние значения, соответствующие 2 различным датам? - PullRequest
0 голосов
/ 23 января 2020

У меня есть такая таблица:

Date          Student    Average(for that date)
17 Jan 2020   Alex          40  
18 Jan 2020   Alex          50
19 Jan 2020   Alex          80
20 Jan 2020   Alex          70
17 Jan 2020   Jeff          10
18 Jan 2020   Jeff          50
19 Jan 2020   Jeff          80
20 Jan 2020   Jeff          60

Я хочу добавить столбец для максимума и минимума. Логика c для этого столбца должна быть такой, чтобы она была высокой, если средний балл студента на сегодняшний день превышает значение <90% балла за предыдущие дни. Как будто мое сравнение выглядело бы примерно так: </p>

avg(score)(for current date) < ( avg(score)(for previous day) - (90% * avg(score)(for previous day) /100)

Я не могу понять, как включить часть даты в мою формулу. То, что она сравнивает средние значения за текущий день со средним за предыдущую дату.

Я работаю с Pandas, поэтому мне было интересно, есть ли способ включить это.

1 Ответ

1 голос
/ 23 января 2020

IIU C,

df['Previous Day'] = df.sort_values('Date').groupby('Student')['Average'].shift()*.90

df['Indicator'] = np.where(df['Average']>df['Previous Day'],'High','Low')

df

Выход:

        Date Student  Average  Previous Day Indicator
0 2020-01-17    Alex       40           NaN       Low
1 2020-01-18    Alex       50          36.0      High
2 2020-01-19    Alex       80          45.0      High
3 2020-01-20    Alex       70          72.0       Low
4 2020-01-17    Jeff       10           NaN       Low
5 2020-01-18    Jeff       50           9.0      High
6 2020-01-19    Jeff       80          45.0      High
7 2020-01-20    Jeff       60          72.0       Low
...