Python中利用rolling与apply实现向下取值及多列滚动操作

不晚
不晚
发布时间:2026-10-14 | 4人浏览过
原创

本文介绍如何在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函数向下取值操作的内容分享完毕,供参考。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表