2 回答

TA貢獻1869條經(jīng)驗 獲得超4個贊
Date
如果行尚未按排序順序排序,即:df = df.sort_values(by='Date')
按年份分組,只保留每組的第一個和最后一個元素:
df.groupby(pd.DatetimeIndex(df.Date).to_period('Y')).nth([0,-1])
使用問題中的示例數(shù)據(jù)幀進行輸出:
Volume Date Open High Low Close Adj
Date
2009 0 2009-12-31 31.709999 31.840000 31.299999 1957700 23.547892
2010 1 2010-01-04 31.480000 31.840000 31.330000 3472500 23.668222
2010 4 2010-01-07 31.549999 31.700001 31.049999 7232100 23.487726
注意:如果每年只有一個條目,如示例 (2009) 中所示,則該行將僅在輸出中出現(xiàn)一次,而不是兩次,但如果用于真實數(shù)據(jù),則無論如何都不會成為問題。

TA貢獻1796條經(jīng)驗 獲得超4個贊
假設(shè)您使用的是 pandas,IMO 是正確的選擇,這是一個 pandas DataFrame。
我覺得最好的選擇是首先按日期索引數(shù)據(jù)框。然后您可以按索引對數(shù)據(jù)框進行排序。這樣您就可以輕松瀏覽各行并選擇每個月的第一個和最后一個條目。
您還可以使用 pandas.DataFrame.loc 來搜索正確的條目。如果您確切地知道要查找的日期,那么這可能是最好的方法。
您可以通過列出您想要數(shù)據(jù)的所有日期來解決此問題。然后循環(huán)遍歷列表并找到所有相應(yīng)的條目并將它們存儲在單獨的數(shù)據(jù)框中。
添加回答
舉報