I have a pandas dataframe with some data:
0 -0.000601 1 0.000001 2 0.000000 3 0.000007 4 0.000300 5 -0.000300 Name: measure, dtype: float64
I’d like to sum them, one at a time, and at every summation check the totalt sum, an then extract the highest value achieved of the total sum.
So the first sum would be element 0, with a value of -0.000601, the send would be -0.000601 + 0.000001=-0.0006, and this would be higher than the first sum (in other words, just element 0), so that value would be the max value up to that point.
I suppose a for loop could do the job but I’d prefer to do something pythonic like measure.loc[0:4, 'measure'].max() but this just checks the max value of the totalt sum.
Advertisement
Answer
I believe you need a cumulative sum and then to locate the max.
>>> df = pd.DataFrame({'a':[-0.000601, 0.000001, 0.000000, 0.000007, 0.000300, -0.000300]})
>>> df
out:
a
0 -0.000601
1 0.000001
2 0.000000
3 0.000007
4 0.000300
5 -0.000300
>>> df['b'] = df.cumsum()
>>> df
out:
a b
0 -0.000601 -0.000601
1 0.000001 -0.000600
2 0.000000 -0.000600
3 0.000007 -0.000593
4 0.000300 -0.000293
5 -0.000300 -0.000593
>>> df[df['b'] == df['b'].max()]
out:
a b
4 0.0003 -0.000293