Python中利用rolling与apply实现向下取值及多列滚动操作
本文介绍如何在Python Pandas中使用rolling和apply函数实现数据框的向下取值及多列滚动操作。通过自定义函数处理窗口内的数据,演示如何生成新列及进行多列滚动计算,包含具体代码示例与结果分析,帮助开发者掌握相关技巧。
Python向下取值与多列滚动实现
直接展示相关代码实现。
import pandas as pd
def get_under_rolling(df,window,user,name):
df[name] = df[user].iloc[::-1].rolling(window=window).apply(lambda x:x[0]).iloc[::-1]
return df
if __name__ == '__main__':
df = pd.DataFrame({'a':[1,2,3,4,5],
'b':[2,3,4,5,6]})
# 把b列向下取值作为新的c列
df = get_under_rolling(df, window=3, user='b',name='c')
原始数据框示例。

经过处理后的新数据框。

补充知识:使用Python的rolling和apply函数对DataFrame进行多列滚动处理。
具体代码实现如下。
# 设置一个初始数据框
df1 = [1,2,3,4,5]
df2 = [2,3,4,5,6]
df = pd.DataFrame({'a':list(df1),'b':list(df2)})
print(df)
a b
0 1 2
1 2 3
2 3 4
3 4 5
4 5 6
定义滚动处理函数。
# 多列滚动函数
# handle对滚动的数据框进行处理
def handle(x,df,name,n):
df = df[name].iloc[x:x+n,:]
print(df)
return 1
# group_rolling 进行滚动
# n:滚动的行数
# df:目标数据框
# name:要滚动的列名
def group_rolling(n,df,name):
df_roll = pd.DataFrame({'a':list(range(len(df)-n+1))})
df_roll['a'].rolling(window=1).apply(lambda x:handle(int(x[0]),df,name,n),raw=True)
对初始数据框执行滚动操作。
参数说明如下。
n=2,name=['a','b'] group_rolling(n=2,df=df,name=['a','b'])
每次滚动的结果如下。
a b
0 1 2
1 2 3
a b
1 2 3
2 3 4
a b
2 3 4
3 4 5
a b
3 4 5
4 5 6
以上关于Python实现rolling和apply函数向下取值操作的内容分享完毕,供参考。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













