屏蔽pandas DataFrame中max之前出现的所有值

dub*_*dan 3 python dataframe pandas

我想从中获取结果pd.DataFrame.idxmax并使用它来更改索引前的值,并使用最大值.

如果我有df:

            Mule Creek  Saddle Mtn.  Calvert Creek
Date                                              
2011-05-01   23.400000    35.599998            8.6
2011-05-02   23.400000    35.599998            8.0
2011-05-03   23.400000    35.700001            7.6
2011-05-04   23.400000    50.000000            7.1
2011-05-05   23.100000    35.799999            6.4
2011-05-06   23.000000    35.799999            5.7
2011-05-07   40.000000    35.900002            4.7
2011-05-08   23.100000    36.500000           12.0
2011-05-09   23.299999    37.500000            4.4
2011-05-10   23.200001    37.500000            3.6
Run Code Online (Sandbox Code Playgroud)

我发现每列的最大值出现在哪里:

max = df.idxmax()
Run Code Online (Sandbox Code Playgroud)

我想确定最大值之前进行数值max全部np.nan

期望的结果:

            Mule Creek  Saddle Mtn.  Calvert Creek
Date                                              
2011-05-01         NaN          NaN            NaN
2011-05-02         NaN          NaN            NaN
2011-05-03         NaN          NaN            NaN
2011-05-04         NaN    50.000000            NaN
2011-05-05         NaN    35.799999            NaN
2011-05-06         NaN    35.799999            NaN
2011-05-07   40.000000    35.900002            NaN
2011-05-08   23.100000    36.500000           12.0
2011-05-09   23.299999    37.500000            4.4
2011-05-10   23.200001    37.500000            3.6
Run Code Online (Sandbox Code Playgroud)

ALo*_*llz 5

可以检查累积最大值与最大值的相同位置:

df.where(df.cummax() == df.max())

            Mule Creek  Saddle Mtn.  Calvert Creek
Date                                              
2011-05-01         NaN          NaN            NaN
2011-05-02         NaN          NaN            NaN
2011-05-03         NaN          NaN            NaN
2011-05-04         NaN    50.000000            NaN
2011-05-05         NaN    35.799999            NaN
2011-05-06         NaN    35.799999            NaN
2011-05-07   40.000000    35.900002            NaN
2011-05-08   23.100000    36.500000           12.0
2011-05-09   23.299999    37.500000            4.4
2011-05-10   23.200001    37.500000            3.6
Run Code Online (Sandbox Code Playgroud)