一个非常简单的示例,仅供了解。如何根据另一列中滚动函数的结果计算pandas DataFrame列的值
目标是根据另一列中滚动函数的结果计算pandas DataFrame列的值。
我有以下数据框:
import numpy as np
import pandas as pd
s = pd.Series([1,2,3,2,1,2,3,2,1])
df = pd.DataFrame({'DATA':s, 'POINTS':0})
df
注:我甚至不知道如何格式化的编辑#1窗口中Jupyter笔记本电脑的结果,所以我复制和粘贴图像,我请你原谅。
该数据列显示观察数据;如下所述,POINTS列被初始化为0,用于收集应用于DATA列的“滚动”函数的输出。
设置窗口= 4
nwin = 4
只是为了示例,“滚动” 函数来计算最大。
现在让我用一张图来解释我需要的东西。
对于每次迭代,所述滚动功能计算出最大的窗口中的数据;那么最大数据相同指数在点由1
最终的结果是增加:
你能帮助我的Python代码?
我真的很感谢你的帮助。
预先感谢您的宝贵时间,
吉尔伯托
附:你也可以建议如何复制和粘贴Jupyter Notebook格式的单元格到Stackoverflow编辑窗口?谢谢。
复制打印的'输出(DF) '在编辑窗口中,并将其全部格式化为代码(工具栏中的“{}”按钮)。另请参见[如何制作好重现熊猫示例](http://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples)。 – IanS
“对于每次迭代,滚动函数计算窗口中数据的最大值;然后,与最大DATA相同索引处的POINT将增加1。 - 我不明白:是不是通过'(df.DATA.rolling(4).max()== df.DATA).astype(int)'增加'POINTS'?不过,它不适合你的输出示例。 –
@AmiTavory,我了解它的方式,前三个滚动窗口在索引2处的最大值,因此索引2处的POINTS值增加了三倍。第四个滚动窗口不再覆盖索引2,所以算法继续运行,可以这么说。一个有趣的问题,我会说... – IanS