关于Pandas版本: 本文基于 pandas2.2.0 编写。
关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。
传送门: Pandas API参考目录
传送门: Pandas 版本更新及新特性
传送门: Pandas 由浅入深系列教程
Pandas.DataFrame.cummax
方法用于返回行或列每一个元素与前面所有元素的累积最大值。
⚠️ 注意 :
字符串可以求累积最大值,其大小是根据字符编码决定的。 例2
- 字符串不能和任何其他类型数据混用,比如 缺失值、数值,否则报错
TypeError
累积最大值计算公式:
M i = max ( x 1 , x 2 , … , x i ) M_i = \max(x_1, x_2, \ldots, x_i) Mi=max(x1,x2,…,xi)
M i M_i Mi 表示当前位置的累积最大值, max ( x 1 , x 2 , … , x i ) \max(x_1, x_2, \ldots, x_i) max(x1,x2,…,xi) 表示从起始位置到当前位置的所有元素的最大值。
DataFrame.cummax(axis=None, skipna=True, *args, **kwargs)
axis : {0 or ‘index’, 1 or ‘columns’}, default 0
axis
参数,用于指定计算方向,即按行计算或按列计算累积最大值:
Series
此参数无效,将始终保持 axis=0
,即计算整列的累积最大值。例1DataFrame
默认为 axis=0
即计算每一列的累积最大值。并有以下参值可选:
skipna : bool, default True >
skipna
参数,用于指定求累积最大值的时候是否忽略缺失值,默认 skipna=True
表示忽略缺失值:
Numpy
的兼容性而保留的参数,一般不需要传递任何内容。➡️ 相关方法
Series.cummax
Series 累积最大值
DataFrame.max
最大值
DataFrame.cummin
累积最小值
DataFrame.cumsum
累积和
DataFrame.cumprod
累积乘积
测试文件下载:
本文所涉及的测试文件,如有需要,可在文章顶部的绑定资源处下载。
若发现文件无法下载,应该是资源包有内容更新,正在审核,请稍后再试。或站内私信作者索要。
Series
始终保持 axis=0
,即计算 Series
所有元素的累积最大值。import numpy as np
import pandas as pd
s = pd.Series([24.0, np.nan, 21.0, 33, 26], name="age")
s.cummax()
0 24.0
1 NaN
2 24.0
3 33.0
4 33.0
Name: age, dtype: float64
import numpy as np
import pandas as pd
df = pd.DataFrame({"第一列": ["一", "二", "三"], "第二列": ["四", "五", "六"]})
df.cummax()
第一列 | 第二列 | |
---|---|---|
0 | 一 | 四 |
1 | 二 | 四 |
2 | 二 | 四 |
由上面结果可见,字符串是支持累积最大值计算的,只不过是根据其字符编码比较大小。
import numpy as np
import pandas as pd
df = pd.DataFrame([[2.0, 1.0],
[3.0, np.nan],
[1.0, 0.0]],
columns=list('AB'))
df.cummax()
A | B | |
---|---|---|
0 | 2.0 | 1.0 |
1 | 3.0 | NaN |
2 | 3.0 | 1.0 |
import numpy as np
import pandas as pd
df = pd.DataFrame(
[[2.0, 1.0, 3.0], [3.0, np.nan, 5.0], [1.0, 1.0, 1.0], [1.0, 0.0, 2.0]],
columns=list("ABC"),
)
df.cummax(axis=1)
A | B | C | |
---|---|---|---|
0 | 2.0 | 2.0 | 3.0 |
1 | 3.0 | NaN | 5.0 |
2 | 1.0 | 1.0 | 1.0 |
3 | 1.0 | 1.0 | 2.0 |
import numpy as np
import pandas as pd
df = pd.DataFrame([[2.0, 1.0],
[3.0, np.nan],
[1.0, 1.0],
[1.0, 0.0]],
columns=list('AB'))
df.cummax()
A | B | |
---|---|---|
0 | 2.0 | 1.0 |
1 | 3.0 | NaN |
2 | 3.0 | 1.0 |
3 | 3.0 | 1.0 |
import numpy as np
import pandas as pd
df = pd.DataFrame([[2.0, 1.0],
[3.0, np.nan],
[1.0, 1.0],
[1.0, 0.0]],
columns=list('AB'))
df.cummax(skipna=False)
A | B | |
---|---|---|
0 | 2.0 | 1.0 |
1 | 3.0 | NaN |
2 | 3.0 | NaN |
3 | 3.0 | NaN |