簡體   English   中英

Python – Pandas:獲取最近5天的最大值

[英]Python – Pandas: Get max value of last 5 days

我有一個包含兩列的csv文件,日期和價格。 我想創建最近5天的“價格”最大值的第三列。 不是最后5行或索引,而是5天。

“ example.csv”的內容

 Date Price 2018-07-23 124.44 2018-07-24 125.49 2018-07-25 123.26 2018-07-31 124.08 2018-08-01 125.10 2018-08-04 121.41 2018-08-05 119.17 2018-08-06 118.58 

它看起來應該像這樣:

 Date Price High5 2018-07-23 124.44 124.44 2018-07-24 125.49 125.49 2018-07-25 123.26 125.49 2018-07-31 124.08 124.08 2018-08-01 125.10 125.10 2018-08-04 121.41 125.10 2018-08-05 119.17 125.10 2018-08-06 118.58 121.41 

通過此代碼,我可以獲得每一行的整個“ Close”列的最大值。

import pandas as pd

df = pd.read_csv('example.csv', parse_dates=True, index_col=0)
df['High5'] = df['Close'].max()

print(df)

使用此代碼,我得到所有行的最近5天(以2018-08-06結尾)的最大值。

import pandas as pd

df = pd.read_csv('example.csv', parse_dates=True, index_col=0)
rng = pd.date_range(end='2018-08-06', periods=5, freq='D')
df['High5'] = df['Price'].loc[rng].max()

print(df['High5'])

我不希望所有行都使用相同的值。 而且我知道使用固定(結束)日期是錯誤的。 但是我不了解我的初學者的答案。

您正在尋找滾動

df=df.set_index('Date')
df.index=pd.to_datetime(df.index)
df.rolling('5 D').max()
#df=df.rolling('5 D').max().reset_index()
Out[62]: 
             Price
Date              
2018-07-23  124.44
2018-07-24  125.49
2018-07-25  125.49
2018-07-31  124.08
2018-08-01  125.10
2018-08-04  125.10
2018-08-05  125.10
2018-08-06  121.41

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM