![](/img/trans.png)
[英]How to speed up Pandas contains when moving rows to another dataframe
[英]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.