【问题标题】:Adding row shifting in pandas dataframe在熊猫数据框中添加行移位
【发布时间】:2020-07-29 09:01:15
【问题描述】:

我有一个熊猫df,它是通过使用shift() 函数迭代原始df 创建的:

for i in range(2, 4):
    df["lag_{}".format(i)] = df.x.shift(i)

因此会有实际的x 列和lag2-lag10 列具有移位的x 值。我已经为回归模型训练了这个数据集,以进行一步前向预测。想在数据帧的末尾添加新行,其中 x 的 nan 值和从最后一个位置偏移的值,以便能够使用这些新的滞后来拟合模型来预测这个新的 nan 值。如何在熊猫中做到这一点?谢谢!

更新: 有 df 的图片,不加粗的 df,粗体的 - 要获取的所需行:

【问题讨论】:

  • df = pd.DataFrame({'x':range(5}) 可以添加预期的输出吗?
  • 当然,我已经添加了示例。

标签: python pandas time-series


【解决方案1】:

DataFrame.append 与带有键x 的字典一起使用:

df = pd.DataFrame({'x':range(10)})

df1 = df.append({'x':np.nan}, ignore_index=True)
#alternative
#df1 = df.append(pd.Series([np.nan], index=['x']), ignore_index=True)

for i in range(2, 10):
    df1["lag_{}".format(i)] = df1.x.shift(i)
print (df1)
      x  lag_2  lag_3  lag_4  lag_5  lag_6  lag_7  lag_8  lag_9
0   0.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN
1   1.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN    NaN
2   2.0    0.0    NaN    NaN    NaN    NaN    NaN    NaN    NaN
3   3.0    1.0    0.0    NaN    NaN    NaN    NaN    NaN    NaN
4   4.0    2.0    1.0    0.0    NaN    NaN    NaN    NaN    NaN
5   5.0    3.0    2.0    1.0    0.0    NaN    NaN    NaN    NaN
6   6.0    4.0    3.0    2.0    1.0    0.0    NaN    NaN    NaN
7   7.0    5.0    4.0    3.0    2.0    1.0    0.0    NaN    NaN
8   8.0    6.0    5.0    4.0    3.0    2.0    1.0    0.0    NaN
9   9.0    7.0    6.0    5.0    4.0    3.0    2.0    1.0    0.0
10  NaN    8.0    7.0    6.0    5.0    4.0    3.0    2.0    1.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 2023-01-21
    • 2018-10-06
    • 2022-09-24
    • 1970-01-01
    • 2014-08-29
    • 2017-09-09
    相关资源
    最近更新 更多