gpt4 book ai didi

python - Pandas 使用滚动总和和递减窗口创建新列

转载 作者:太空宇宙 更新时间:2023-11-03 15:31:44 25 4
gpt4 key购买 nike

与此 question 略有不同的版本。答案大多有效,挑战是我认为我需要在每次循环后更新范围,并且我不完全确定如何实现这一点。

或者,这似乎类似于滚动总和类型的问题,但窗口是动态的,我正在创建新列......(不确定)

无论如何,这是我最终写出的代码,但我知道它很糟糕,仍然是一个n00b。

更优雅的方法是什么

示例数据

df = pd.DataFrame({'level1': np.random.randint(1, 10, 10),
'level2': np.random.randint(1, 10, 10),
'level3': np.random.randint(1, 10, 10),
'level4': np.random.randint(1, 10, 10),
'level5': np.random.randint(1, 10, 10),
'level6': np.random.randint(1, 10, 10),
'level7': np.random.randint(1, 10, 10),
'level8': np.random.randint(1, 10, 10),
'level9': np.random.randint(1, 10, 10),
'level10': np.random.randint(1, 10, 10),
'level11': np.random.randint(1, 10, 10),
'level12': np.random.randint(1, 10, 10),
'level13': np.random.randint(1, 10, 10),
'level14': np.random.randint(1, 10, 10),
'level15': np.random.randint(1, 10, 10)})

我当前的“工作”解决方案”

orgcols['layers2'] = orgcols.Level2 + orgcols.Level3 + orgcols.Level4 + orgcols.Level5 + orgcols.Level6 + orgcols.Level7 + orgcols.Level8 +orgcols.Level9 + orgcols.Level10 + orgcols.Level11 + orgcols.Level12 + orgcols.Level13 + orgcols.Level14 + orgcols.Level15

orgcols['layers3'] = orgcols.Level3 + orgcols.Level4 + orgcols.Level5 + orgcols.Level6 + orgcols.Level7 + orgcols.Level8 + orgcols.Level9 + orgcols.Level10 + orgcols.Level11 + orgcols.Level12 + orgcols.Level13 + orgcols.Level14 + orgcols.Level15

orgcols['layers4'] = orgcols.Level4 + orgcols.Level5 + orgcols.Level6 + orgcols.Level7 + orgcols.Level8 + orgcols.Level9 + orgcols.Level10 + orgcols.Level11 + orgcols.Level12 + orgcols.Level13 + orgcols.Level14 + orgcols.Level15

orgcols['layers5'] = orgcols.Level5 + orgcols.Level6 + orgcols.Level7 + orgcols.Level8 + orgcols.Level9 + orgcols.Level10 + orgcols.Level11 + orgcols.Level12 + orgcols.Level13 + orgcols.Level14 + orgcols.Level15

orgcols['layers6'] = orgcols.Level6 + orgcols.Level7 + orgcols.Level8 + orgcols.Level9 + orgcols.Level10 + orgcols.Level11 + orgcols.Level12 + orgcols.Level13 + orgcols.Level14 + orgcols.Level15

orgcols['layers7'] = orgcols.Level7 + orgcols.Level8 + orgcols.Level9 + orgcols.Level10 + orgcols.Level11 + orgcols.Level12 + orgcols.Level13 + orgcols.Level14 + orgcols.Level15

orgcols['layers8'] = orgcols.Level8 + orgcols.Level9 + orgcols.Level10 + orgcols.Level11 + orgcols.Level12 + orgcols.Level13 + orgcols.Level14 + orgcols.Level15

orgcols['layers9'] = orgcols.Level9 + orgcols.Level10 + orgcols.Level11 + orgcols.Level12 + orgcols.Level13 + orgcols.Level14 + orgcols.Level15

orgcols['layers10'] = orgcols.Level10 + orgcols.Level11 + orgcols.Level12 + orgcols.Level13 + orgcols.Level14 + orgcols.Level15

orgcols['layers11'] = orgcols.Level11 + orgcols.Level12 + orgcols.Level13 + orgcols.Level14 + orgcols.Level15

orgcols['layers12'] = orgcols.Level12 + orgcols.Level13 + orgcols.Level14 + orgcols.Level15

orgcols['layers13'] = orgcols.Level13 + orgcols.Level14 + orgcols.Level15

orgcols['layers14'] = orgcols.Level14 + orgcols.Level15

orgcols['layers15'] = orgcols.Level15

最佳答案

您必须使用两个循环,一个用于层,一个内部循环来完成求和部分。

for i in range(2,15):
t='layers'+i
orgcols[t]=0
for j in range(i,15):
orgcols[t]=orgcols[t]+orgcols['Level'+j]

我只是尝试将代码减少为几行,由于没有提供数据,所以没有尝试运行它,如果出现任何错误,请评论。

关于python - Pandas 使用滚动总和和递减窗口创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42848426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com