【问题标题】:Python pandas dataframe - daily data - get first and last day for every yearPython pandas 数据框 - 每日数据 - 获取每年的第一天和最后一天
【发布时间】:2020-10-11 01:59:31
【问题描述】:

我有一个 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 日,我想保留这个作为今年的最后一个条目。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:
    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) 中那样每年只有一个条目,则该行将仅在输出中出现一次,而不是两次,但如果用于实际数据,则不会反正是个问题。

    【讨论】:

      【解决方案2】:

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

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

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

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

      我建议查看official documentation for pandas,尤其是pandas.Dataframe

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-04
        • 1970-01-01
        • 2017-08-19
        • 1970-01-01
        • 1970-01-01
        • 2018-02-01
        • 1970-01-01
        相关资源
        最近更新 更多