python使用滚动函数rolling()连续选择数据

对于二维数组,有时候需要类似于滑动窗口连续滚动选择数据,本文使用rolling()函数滚动选择数据。

# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np

# 设置一个初始数据框
df1 = [1,2,3,4,5]
df2 = [2,3,4,5,6]
df3 = [3,4,5,6,7]
df4 = [4,5,6,7,8]
df = pd.DataFrame({'a':list(df1),'b':list(df2),'c':list(df3),'d':list(df4)})
print("input data:\n",df)

# 多列滚动函数
# handle对滚动的数据框进行处理

df_result = []
def handle(x,df,n):
  if x+n < df.shape[1] or x+n == df.shape[1]:      #当滚动框滚动到数据边界位置停止滚动
    df = df[:].iloc[ : , x : x+n]                  #使用iloc函数选择需要滚动操作的数据        
    df = np.array(df)
    df_result.append(df)                           #保存滚动操作选择的数据
    print("roll result:\n",df)
  return 1

# group_rolling 进行滚动 
# n:滚动的行数
# df:目标数据框
# name:要滚动的列名
def group_rolling(n,df):
  df_roll = pd.DataFrame({0:list(range(len(df)-n+1))})
  df_roll[0].rolling(window=1).apply(lambda x:handle(int(x[0]),df,n),raw=True)  #window:表示时间窗的大小

group_rolling(n=2,df=df)

df_result1 = np.array(df_result)
print("roll result saved:\n",df_result1)
print("df_result1:",df_result1.shape)

滚动选择的结果如下,将滚动结果保存在df_result1中构成尺寸为(3,5,2)数组。

 input data:
   a  b  c  d
0  1  2  3  4
1  2  3  4  5
2  3  4  5  6
3  4  5  6  7
4  5  6  7  8
roll result:
 [[1 2]
  [2 3]
  [3 4]
  [4 5]
  [5 6]]
roll result:
 [[2 3]
  [3 4]
  [4 5]
  [5 6]
  [6 7]]
roll result:
 [[3 4]
  [4 5]
  [5 6]
  [6 7]
  [7 8]]
roll result saved:
 [[[1 2]
   [2 3]
   [3 4]
   [4 5]
   [5 6]]

 [[2 3]
  [3 4]
  [4 5]
  [5 6]
  [6 7]]

 [[3 4]
  [4 5]
  [5 6]
  [6 7]
  [7 8]]]
df_result1: (3, 5, 2)
  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一颗小萌新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值