为了账号安全,请及时绑定邮箱和手机立即绑定

Python pandas dataframe - 每日数据 - 获取每年的第一天和最后一天

Python pandas dataframe - 每日数据 - 获取每年的第一天和最后一天

HUWWW 2023-10-26 10:30:21
我有一个 Python pandas 数据框,其中包含每日数据,如下所示:            Date       Open       High        Low      Close  Adj Close   Volume0     2009-12-31  31.709999  31.840000  31.299999  31.309999  23.547892  19577001     2010-01-04  31.480000  31.840000  31.330000  31.469999  23.668222  34725002     2010-01-05  31.549999  31.770000  31.400000  31.639999  23.796082  34587003     2010-01-06  31.600000  31.889999  31.430000  31.559999  23.735907  37458004     2010-01-07  31.549999  31.700001  31.049999  31.230000  23.487726  7232100如何保存每年的第一个和最后一个条目?如果一年的最后一个条目是 10 月 31 日,我想将其保留为今年的最后一个条目。
查看完整描述

2 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

  1. Date如果行尚未按排序顺序排序,即:

    df = df.sort_values(by='Date')

  2. 按年份分组,只保留每组的第一个和最后一个元素:

    df.groupby(pd.DatetimeIndex(df.Date).to_period('Y')).nth([0,-1])

使用问题中的示例数据帧进行输出:

     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) 中所示,则该行将仅在输出中出现一次,而不是两次,但如果用于真实数据,则无论如何都不会成为问题。


查看完整回答
反对 回复 2023-10-26
?
SMILET

TA贡献1796条经验 获得超4个赞

假设您使用的是 pandas,IMO 是正确的选择,这是一个 pandas DataFrame。

我觉得最好的选择是首先按日期索引数据框。然后您可以按索引对数据框进行排序。这样您就可以轻松浏览各行并选择每个月的第一个和最后一个条目。

您还可以使用 pandas.DataFrame.loc 来搜索正确的条目。如果您确切地知道要查找的日期,那么这可能是最好的方法。

您可以通过列出您想要数据的所有日期来解决此问题。然后循环遍历列表并找到所有相应的条目并将它们存储在单独的数据框中。

查看完整回答
反对 回复 2023-10-26
  • 2 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信