使用Python pandas的shift方法时如何自动追加超出DataFrame末尾的行
pandas 原生的shift方法默认仅在现有索引范围内移动数值,不会自动追加新行,你可以先通过reindex或者concat方法一次性扩展数据行数,再执行计算即可,完全不需要用for循环逐行追加。
实现代码
如果你的DataFrame用的是默认连续整数索引,推荐用reindex方案:
# 取原数据行数 original_len = len(self) # 直接将索引扩展到原长度+30,新增行默认填充空值 self = self.reindex(range(original_len + 30)) # 执行原有的c列计算逻辑 self['c'] = ((self['a'] + self['b']) / 2).shift(30)
如果你的索引是非默认的自定义格式,可以用concat方案统一追加空行:
import pandas as pd # 追加30行空数据,ignore_index自动生成连续整数新索引 self = pd.concat([self, pd.DataFrame(index=[*range(30)])], ignore_index=True) # 执行原有的c列计算逻辑 self['c'] = ((self['a'] + self['b']) / 2).shift(30)
两种方案都能直接得到130行的结果,原有的100行a、b列数据会保留,shift后的计算结果会自动填充到第130行的位置,和你预期的计算逻辑完全一致。
内容的提问来源于stack exchange,提问作者Jacob R
相关产品推荐
相关产品推荐

