python问题:df 在groupby 后,凭定位依据数据,对被定位数据前边和后边的数据分别求最值? 待大神!需要您给个代码哈!谢谢
a = pd.DataFrame({'year':[2018,2018,2018,2019,2019,2019,2019,2020,2020,2020,2020],'BoolCol': [1.2, 2.4, 3.7, 3.41, 4.58, 3.41, 4.0, 3.0, 7.0, 9.1, 7.0]})
b=pd.DataFrame({'year':[2018,2019,2020],'BoolCol': [1.2, 4.58, 7.0]})
#以上是数据简例,实际数据多,
问题是,我想先依据 b中的'BoolCol'的[1.2, 4.58, 7.0]数据作为定位依据数据。接着,对a按'year'进行groupby后,找出a的'BoolCol'列的每个group中的被定位数据,最终分别求出被定位数据之前的数据中的最大值;和被定位数据之后的数据中的最大值。
#例如a在groupby后,b中定位依据数据7.0对应的就应是a中的2020年的 'BoolCol'列中[3.0, 7.0, 9.1, 7.0]这样的数据list,这里假定要求定位依据数据7.0对应的被定位数据就是在list中的第一次出现的7.0(因为确实有可能多次出现同一数据,所以这里指定为首次出现的数据为被定位数据),之后再找出list中这个7.0前边的数据里的最大值,这里实际应该是3.0,但同时,若7.0就是第一个数据的时候,那么就指定7.0是应被找出的数值(最大值)。
这样被定位数据之前的数据中的最大值,应为一列数据[1.2, 3.41, 3.0]
同理!!被定位数据之后的数据中的最大值 ,应为一列数据[3.7, 4.0, 9.1] 以上为数据简例,实际数据较多
望有python大神现身,大神啊,需要给个代码哈!!!求助中!!!