我有一个Python pandas数据框架,其中包含每日数据,如下所示:
Date Open High Low Close Adj Close Volume
0 2009-12-31 31.709999 31.840000 31.299999 31.309999 23.547892 1957700
1 2010-01-04 31.480000 31.840000 31.330000 31.469999 23.668222 3472500
2 2010-01-05 31.549999 31.770000 31.400000 31.639999 23.796082 3458700
3 2010-01-06 31.600000 31.889999 31.430000 31.559999 23.735907 3745800
4 2010-01-07 31.549999 31.700001 31.049999 31.230000 23.487726 7232100
如何保存每年的第一个和最后一个条目?如果一年的最后一个条目是10月31日,我想把这个条目作为这一年的最后一个条目
假设您使用的是pandas,在这里哪个IMO是正确的选择,这是一个pandas数据帧
我觉得最好的选择是首先按日期索引数据帧。 然后可以按索引对数据帧进行排序。 这样,您就可以轻松地浏览各行并为每个月选择第一个和最后一个条目
您还可以使用pandas.DataFrame.loc搜索正确的条目。 如果你确切地知道你要找的日期,那么这可能是最好的方法
您可以通过列出所有需要数据的日期来实现这一点。 然后循环遍历列表,找到所有对应的条目,并将它们存储在单独的数据框中
我建议浏览official documentation for pandas,尤其是pandas.Dataframe
按
Date
排序,如果行尚未按排序顺序排序,例如:df = df.sort_values(by='Date')
按年份分组,仅保留每组的第一个和最后一个元素:
df.groupby(pd.DatetimeIndex(df.Date).to_period('Y')).nth([0,-1])
使用问题中的示例数据框输出:
注意:如果像示例(2009)中那样每年只有一个条目,那么该行将只在输出中出现一次,而不是两次,但如果在实际数据中使用,则无论如何都不会成为问题
相关问题 更多 >
编程相关推荐