在pandas中添加一个具有回溯x行的最大值的列

时间:2018-01-11 22:45:00

标签: python pandas

我的Orignal数据框如下:

   Date  Price
0     0    100
1     1     10
2     2     30
3     3     20
4     4     50

价格浮动。

我需要能够添加一个“最近x天的最大值”列,包括今天  到原始数据框。

结果应该是 X = 3

  Date   Price   Max_3Days
    0      100    N/A
    1      10     N/A
    2      30     100
    3      20     30
    4      50     50  

1 个答案:

答案 0 :(得分:2)

假设这是你的输入,

df

   Date  Price
0     0    100
1     1     10
2     2     30
3     3     20
4     4     50

您可以通过滚动最大值

完成此操作
df.Price.rolling(3).max()

0      NaN
1      NaN
2    100.0
3     30.0
4     50.0
Name: Price, dtype: float64

或者,如果确实想要N/A而不是NaN,从而通过混合字符串和对象来破坏性能,请在fillna之后链接{。}}。

df.Price.rolling(3).max().fillna('N/A')

0    N/A
1    N/A
2    100
3     30
4     50
Name: Price, dtype: object

请注意!我不经常提及较旧版本的API,但对于0.17及以下版本,pd.rolling_max -

pd.rolling_max(df.Price, window=3)

0      NaN
1      NaN
2    100.0
3     30.0
4     50.0
Name: Price, dtype: float64

在最近的版本中弃用,请改用pd.Series.Rolling.max