Tony Abboud
Tony Abboud

Reputation: 2430

Compute the running (cumulative) maximum for a series in pandas

Given:

d = {
    'High': [954,
             953,
             952,
             955,
             956,
             952,
             951,
             950,
            ]
}
df = pandas.DataFrame(d)

I want to add another column which is the max at each index from the beginning. For example the desired column would be:

'Max': [954, 
        954, 
        954, 
        955, 
        956, 
        956, 
        956, 
        956]

I tried with a pandas rolling function but the window cannot be dynamic it seems

Upvotes: 7

Views: 3385

Answers (1)

piRSquared
piRSquared

Reputation: 294218

Use cummax

df.High.cummax()

0    954
1    954
2    954
3    955
4    956
5    956
6    956
7    956
Name: High, dtype: int64

df['Max'] = df.High.cummax()
df

enter image description here

Upvotes: 10

Related Questions