如何将DataFrame列值替换为该列上方的最大值?
解决方案
直接使用Pandas的cummax()函数即可实现需求,该函数会逐行计算列的累计最大值,自动忽略NaN值,完美匹配你要的规则:
import pandas as pd import numpy as np # 构造原始DataFrame df = pd.DataFrame({'a': [100, 103, 101, np.nan, 105, 107, 100]}) # 生成列b df['b'] = df['a'].cummax().astype(int) print(df)
运行后输出结果:
a b 0 100.0 100 1 103.0 103 2 101.0 103 3 NaN 103 4 105.0 105 5 107.0 107 6 100.0 107
原理说明
cummax():逐行遍历列a,始终保留到当前行为止的最大值,遇到NaN时会跳过,沿用之前的最大值astype(int):将结果转为整数类型,和你期望的输出格式一致(如果不需要可以省略)
内容的提问来源于stack exchange,提问作者AmirX
相关产品推荐
相关产品推荐

