如何用Pandas为透视表添加昨日B列?能否不新增列做ML特征?
Pandas实现前一日数据提取与机器学习特征构建
1. 新增yesterday_B列的实现
完全可以用Pandas的shift()函数实现,这是处理时序数据偏移的标准方法:
# 假设你的透视表数据存储在DataFrame df中 df['yesterday_B'] = df['B'].shift(1)
shift(1)会将B列的所有数据向下偏移1行,这样每一行的yesterday_B就对应上一行(前一日)的B值,第一行因没有前序数据会自动填充为NaN,完全匹配你需要的结果。
2. 不新增列直接构建机器学习特征
不需要新增列到原DataFrame,直接构造包含当前B值和前一日B值的特征矩阵即可:
方法一:用Pandas构造特征DataFrame
# 直接拼接当前B值和偏移后的B值,得到特征矩阵 feature_matrix = pd.concat([df['B'], df['B'].shift(1)], axis=1) # 可选:给特征命名 feature_matrix.columns = ['current_B', 'yesterday_B']
方法二:用NumPy构造特征数组
如果后续模型需要NumPy数组格式的输入,也可以直接构造:
import numpy as np # 组合当前B值和偏移后的B值为二维数组 feature_array = np.column_stack([df['B'].values, df['B'].shift(1).values])
这样得到的feature_matrix或feature_array可直接用于机器学习模型的训练,无需修改原始数据。
内容的提问来源于stack exchange,提问作者Mohmmad Hadi
相关产品推荐
相关产品推荐

