如何基于DataFrame当前行起的A列最小值更新B列
解决方案:填充当前行至末尾的A列最小值
核心代码
import pandas as pd import numpy as np # 构造示例DataFrame df = pd.DataFrame({ 'A': [500, 800, 700, 650, 800, 780, 750], 'B': [np.nan]*7 }) # 填充B列:当前行至末尾的A列最小值 df['B'] = df['A'][::-1].cummin()[::-1] print(df)
代码解释
df['A'][::-1]:将A列倒序排列,从最后一行开始往前取数.cummin():对倒序后的A列计算累积最小值,此时得到的结果是从原数据末尾到当前位置的最小值[::-1]:将累积最小值的结果再次倒序,还原回原数据的行顺序,此时每一行的值就是原数据中从当前行到末尾的A列最小值
输出结果
A B 0 500 500.0 1 800 650.0 2 700 650.0 3 650 650.0 4 800 750.0 5 780 750.0 6 750 750.0
原方法的问题
df['A'].min()计算的是A列所有行的全局最小值,无法针对“当前行至末尾”这个动态范围计算最小值,而反向累积最小值的方法刚好适配这种从后往前的范围需求。
内容的提问来源于stack exchange,提问作者Indi Quant
相关产品推荐
相关产品推荐

