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

标签 python pandas dataframe

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

最佳答案

  1. 如果行尚未按排序顺序,则按日期排序,例如:

    df = df.sort_values(by='日期')

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

关于Python pandas dataframe - 每日数据 - 获取每年的第一天和最后一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64296273/

相关文章:

python - Pandas 数据框 : group by columnn and let duplicates of this columnn span several rows

python - 将时间序列转入面板...python

python - 动态实例化对象

python - 如何在 requirements.txt 中指定仅针对 Python 2(即不是 Python 3)的要求?

python - 在 Pandas Read_CSV 中使用 UseCols 时按指定顺序保留列

python - 如何在pyspark中分解数据框的多列

python - portalocker 似乎没有锁定

python - 从列中过滤掉非数字值

python - Specifically silent Pandas SettingWithCopyWarning 使用警告上下文管理器?

python - 使用常量初始化数据帧