簡體   English   中英

在日期索引的 dataframe 中向上移動 x 行

[英]Moving x rows up in a dataframe indexed on dates

我有一個以Date 作為索引的 dataframe 。 dataframe 有股市相關數據,因此日期不連續。 如果我想在 dataframe 中移動 120 行,我該怎么做。 例如:

如果我想從 2018 年初之前的 120 個交易日開始獲取數據,我該怎么做:

df['2018-01-01':'2019-12-31']

謝謝

假設您使用的是 pandas 並且 dataframe 按日期排序,一個非常簡單的方法是:

initial_date = '2018-01-01'

initial_date_index = df.loc[df['dates']==initial_date].index[0]

offset=120

start_index = initial_date_index-offset


new_df = df.loc[start_index:]

嘗試這個:

df[df.columns[df.columns.get_loc('2018-01-01'):df.columns.get_loc('2019-12-31')]]

獲取列數組中兩個列的位置並索引它們以獲得所需的。

更新:

根據您的要求,對上述內容進行一些小的修改。

年度索引

>>> df[df.columns[(df.columns.get_loc('2018')).start:(df.columns.get_loc('2019')).stop]]

上面df.columns.get_loc('2018')將給出 numpy 切片 object 並將為我們提供 2018 年第一個元素的索引(我們使用切片的.start屬性對其進行索引),類似地我們對 2019 年最后一個元素的索引進行索引。

每月索引

現在考慮您想要 2018 年前 6 個月的數據(不知道第一天是哪一天),同樣可以使用:

>>> df[df.columns[(df.columns.get_loc('2018-01')).start:(df.columns.get_loc('2018-06')).stop]]

正如您在上面看到的,我們使用相同的邏輯對 2018 年的前 6 個月進行了索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM