gpt4 book ai didi

python - Pandas:在滚动窗口中查找最大值并返回最大值行的另一列的总和以及后续四行

转载 作者:行者123 更新时间:2023-12-04 03:39:46 24 4
gpt4 key购买 nike

我有一个包含两列的数据框。我想找到第一列的滚动 5 周期最大值,并计算滚动最大值行和前 4 行的值和第二列的总和。

下面是所需输出的示例,其中 Col1 和 Col2 如上所述,滚动最大值的第三列和计算所需结果的最后一列

这是设置前三列的代码:

data ={'Col1': [4,2,3,4,5,6,5,4,3,2,1,4,3,2,1],
'Col2' :[10,20,10,15,10,20,10,15,10,20,10,15,10,20,10]}
df = pd.DataFrame(data)
df['Col1_Rolling5_Max'] = df['Col1'].rolling(5).max()
df

这是所需输出的示例:

enter image description here

最佳答案

您只能计算下一个 Rolling5_Max 不同的行的滚动总和,然后向前填充以填充其余部分。

import pandas as pd
import numpy as np

data ={'Col1': [4,2,3,4,5,6,5,4,3,2,1,4,3,2,1],
'Col2' :[10,20,10,15,10,20,10,15,10,20,10,15,10,20,10]}
df = pd.DataFrame(data)
df['Col1_Rolling5_Max'] = df['Col1'].rolling(5).max()


df['flag'] = df['Col1_Rolling5_Max'].ne(df['Col1_Rolling5_Max'].shift())
df['Sum_5_Col1_Before_Max']= np.where(df['flag']==True,df['Col2'].rolling(5).sum(),np.nan)
df.ffill(inplace=True)
df[['Col1','Col2','Col1_Rolling5_Max','Sum_5_Col1_Before_Max']]

输出

    Col1  Col2  Col1_Rolling5_Max  Sum_5_Col1_Before_Max
0 4 10 NaN NaN
1 2 20 NaN NaN
2 3 10 NaN NaN
3 4 15 NaN NaN
4 5 10 5.0 65.0
5 6 20 6.0 75.0
6 5 10 6.0 75.0
7 4 15 6.0 75.0
8 3 10 6.0 75.0
9 2 20 6.0 75.0
10 1 10 5.0 65.0
11 4 15 4.0 70.0
12 3 10 4.0 70.0
13 2 20 4.0 70.0
14 1 10 4.0 70.0

关于python - Pandas:在滚动窗口中查找最大值并返回最大值行的另一列的总和以及后续四行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66252982/

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