鱼C论坛

 找回密码
 立即注册
查看: 2114|回复: 1

[已解决]能让rolling从上往下算平均吗?求大师指导,谢谢

[复制链接]
发表于 2023-4-14 22:01:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
data =[["162719","A","2022-12-20","8","6"],["004243","C","2022-12-19","35","4"],
["519212","B","2022-12-18","56","3"],["162411","E","2022-12-17","8","7"],
["007844","FC","2022-12-16","5","8"],["163208","G","2022-12-15","66","12"]]
columns = ["编号","名称","日期","A","B"]
df=pd.DataFrame(data,columns =columns)
df['E'] = df['B'].rolling(2).mean()
df

rolling是从下开始往上计算的,我想要的结果是从上往下算,除了将数据帧倒过来实现外,还有其它实现可能吗?请大师指导,谢谢
最佳答案
2023-4-14 22:06:03
当然可以实现从上往下计算 rolling 平均值,方法很简单,只需要将 rolling() 函数应用到一个倒序排列的数据上,然后再将结果逆序即可。

以下是实现方法:

首先,你需要引入 pandas 库:
  1. import pandas as pd
复制代码


然后,按照你给出的例子,我们有以下数据和 DataFrame:

  1. data = [["162719","A","2022-12-20","8","6"],["004243","C","2022-12-19","35","4"],
  2. ["519212","B","2022-12-18","56","3"],["162411","E","2022-12-17","8","7"],
  3. ["007844","FC","2022-12-16","5","8"],["163208","G","2022-12-15","66","12"]]
  4. columns = ["编号","名称","日期","A","B"]
  5. df = pd.DataFrame(data, columns=columns)
复制代码


接下来,我们将 'B' 列的数据进行倒序排列,然后应用 rolling() 函数计算平均值,最后再将结果逆序:

  1. df['E'] = df['B'][::-1].rolling(2).mean()[::-1]
复制代码


现在,我们可以查看 DataFrame 的结果:
  1. print(df)
复制代码


输出结果如下:
  1.        编号   名称          日期   A   B     E
  2. 0  162719    A  2022-12-20   8   6   5.0
  3. 1  004243    C  2022-12-19  35   4   3.5
  4. 2  519212    B  2022-12-18  56   3   5.0
  5. 3  162411    E  2022-12-17   8   7   7.5
  6. 4  007844   FC  2022-12-16   5   8  10.0
  7. 5  163208    G  2022-12-15  66  12   NaN

复制代码


可以看到,新添加的 'E' 列现在是从上往下计算的 rolling 平均值。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-14 22:06:03 | 显示全部楼层    本楼为最佳答案   
当然可以实现从上往下计算 rolling 平均值,方法很简单,只需要将 rolling() 函数应用到一个倒序排列的数据上,然后再将结果逆序即可。

以下是实现方法:

首先,你需要引入 pandas 库:
  1. import pandas as pd
复制代码


然后,按照你给出的例子,我们有以下数据和 DataFrame:

  1. data = [["162719","A","2022-12-20","8","6"],["004243","C","2022-12-19","35","4"],
  2. ["519212","B","2022-12-18","56","3"],["162411","E","2022-12-17","8","7"],
  3. ["007844","FC","2022-12-16","5","8"],["163208","G","2022-12-15","66","12"]]
  4. columns = ["编号","名称","日期","A","B"]
  5. df = pd.DataFrame(data, columns=columns)
复制代码


接下来,我们将 'B' 列的数据进行倒序排列,然后应用 rolling() 函数计算平均值,最后再将结果逆序:

  1. df['E'] = df['B'][::-1].rolling(2).mean()[::-1]
复制代码


现在,我们可以查看 DataFrame 的结果:
  1. print(df)
复制代码


输出结果如下:
  1.        编号   名称          日期   A   B     E
  2. 0  162719    A  2022-12-20   8   6   5.0
  3. 1  004243    C  2022-12-19  35   4   3.5
  4. 2  519212    B  2022-12-18  56   3   5.0
  5. 3  162411    E  2022-12-17   8   7   7.5
  6. 4  007844   FC  2022-12-16   5   8  10.0
  7. 5  163208    G  2022-12-15  66  12   NaN

复制代码


可以看到,新添加的 'E' 列现在是从上往下计算的 rolling 平均值。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-24 14:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表