我的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
答案 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
。