将Pandas系列转换为向前填充单调递增

问题描述

我想将非单调递增的Pandas系列转换为单调递增的Pandas系列。 非常类似于Transform a Pandas series to be monotonic 而是丢弃递减的值,将其替换为先前的值。类似于DataFrame.fillna(method ='ffill')。

基本上,我想对以下代码进行矢量化(最好使用Pandas):

import matplotlib.pyplot as plt
import pandas as pd
s = pd.Series([0,1,2,3,4,5])
f,a = plt.subplots()
s.plot(ax=a,alpha=0.5,linestyle='steps-mid')
for i in range(s.size-1):
    j=i+1
    if s.iat[j] < s.iat[i] :
        s.iat[j] = s.iat[i]
s.plot(ax=a,linestyle='steps-mid')

enter image description here

任何帮助将不胜感激。

解决方法

您好运,我的朋友。已经有一种适合您的熊猫方法!

df = pd.DataFrame({'A': [0,1,2,3,4,5]})
df['A'] = pd.DataFrame.cummax(df.A)

享受!