pandas中的rolling方法
python的数据处理包pandas有两个重要的数据结构,Series和Dataframe。对Series的当前索引中的数据进行处理,很容易,可以用apply方法来完成。
但是很多时候,我们会遇到涉及到窗口的数据处理。比如,连续出现三次的数字。这个时候,我们需要获取Series当前索引值得前后多个值。
1. 读取数据
dataframe=pd.DataFrame({'id':range(7),'num':[1,1,1,2,1,2,2]})
其中,id是数据序号,num是数据。问题是:找出所有至少连续出现三次的数字。
2. rolling处理数据
dataframe['status'] = dataframe['num'].rolling(3).apply(lambda x: 1 if x[0] == x[1] and x[1] == x[2] else 0, raw=True) dataframe_num = dataframe[dataframe['status'] == 1]
其中,dataframe_num是满足条件的数据。rolling的窗口大小为3,apply函数是对窗口内的数据进行处理。raw=True表示处理的数据是ndarray对象,而不是Series对象,这样就方便对窗口内的每个值进行处理。