我有一张这样的桌子:
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我想添加一个高的和低的列。这一栏的逻辑应该是,只要今天学生的平均分数大于前一天分数的90%,它就会很高。就像我的比较是这样的:
avg(score)(for current date) < ( avg(score)(for previous day) - (90% * avg(score)(for previous day) /100)我无法计算如何将日期部分合并到我的formula.That中,它将当前的平均值与前一个日期的平均值进行比较。
我和Pandas一起工作,所以我想知道是否有一种方法来整合这一点。
发布于 2020-01-23 17:30:22
IIUC,
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 Lowhttps://stackoverflow.com/questions/59883885
复制相似问题