如何基于前置条件为Pandas DataFrame设置case列值?
实现方法
直接用pandas的ffill()(向前填充)方法即可满足需求——它会把已设置好的buy/sell值,填充到后续的空值行中,直到遇到下一个触发条件(新的buy或sell),完美匹配你要的“保持上一个触发状态直到切换”逻辑。
完整代码
import pandas as pd # 初始化数据 df = pd.DataFrame({'price': [1,2,8, 9, 3,5,20,8,7,1,2,3,4,6, 10, 15,9,8, 6, 75,1, 3, 20,30, 5, 4,31, 25, 8]}) # 设置初始触发条件的case值 df.loc[df['price']> 10, 'case'] = 'buy' df.loc[df['price']< 5, 'case'] = 'sell' # 向前填充空值,保持上一个触发状态 df['case'] = df['case'].ffill()
效果说明
执行后,所有price在5-10之间的行,都会继承最近一次触发的状态:
- 触发
buy后,后续5-10的行保持buy直到遇到sell - 触发
sell后,后续5-10的行保持sell直到遇到buy
内容的提问来源于stack exchange,提问作者Toma
相关产品推荐
相关产品推荐

