关于Pandas中frame.append方法弃用警告的代码修改求助
解决Pandas DataFrame.append()弃用警告问题
你遇到的警告是因为DataFrame.append()方法已被标记为弃用,后续Pandas版本会彻底移除该方法,官方明确推荐使用pd.concat()替代。
修改后的代码
替换循环中逐次append的逻辑,改为先收集所有生成的布尔Series到列表,再一次性用pd.concat合并,既解决警告,又能提升代码性能(避免多次创建新DataFrame对象):
def gettrigger(self): masks = [] for i in range(self.lags + 1): mask = (self.df['%K'].shift(i) < 20 ) & (self.df['%D'].shift(i) < 20) masks.append(mask) dfx = pd.concat(masks, axis=1, ignore_index=True) return dfx.sum(axis=0)
更简洁的写法(列表推导式)
可以用列表推导式简化循环部分,逻辑完全一致:
def gettrigger(self): masks = [(self.df['%K'].shift(i) < 20) & (self.df['%D'].shift(i) < 20) for i in range(self.lags + 1)] dfx = pd.concat(masks, axis=1, ignore_index=True) return dfx.sum(axis=0)
关键说明
pd.concat默认按行合并(axis=0),这里我们需要按列合并多个Series,所以指定axis=1ignore_index=True会重置合并后的DataFrame列索引,和原代码append(ignore_index=True)的效果一致- 合并后求和逻辑保持不变,最终返回的结果和原代码完全相同
内容的提问来源于stack exchange,提问作者Cango
相关产品推荐
相关产品推荐

