2017-06-29 13 views
-1
import quandl 
import pandas as pd 
from pandas_datareader import data, wb 
import sys 
#df = DataFrame(table, columns=headers) 
#df = DataFrame(table) 


#Code to take data from Quandl 
df=quandl.get("NSE/BHEL",start_date="2017-06-15", end_date="2017-06-29") 
df.rename(columns = {'Last':'Adj Close'}, inplace = True) 
df=df[['Open','High','Low','Adj Close','Close']] 
df.drop(df.index[2,10]) 

我上面的代碼來從quandl數據,它提供了日期,打開高,低,調關閉,關閉數據Python的數據幀的存貨數據 - 刪除功能不工作

得到這個數據後我想要將第1行(不是索引,數據行)刪除到第10行,但使用上面給出的drop函數什麼都不工作,它會給出與我們從quandl收到的數據相同的數據。我希望專家能幫助我用乾淨的代碼實現this.Please給我的代碼爲python3.6

   Open High  Low Adj Close Close 
Date 
2017-06-15 138.25 140.55 137.40  138.70 139.10 
2017-06-16 139.35 140.70 137.90  138.10 138.30 
2017-06-19 138.60 139.40 137.85  138.00 138.10 
2017-06-20 138.50 138.80 137.40  137.60 137.80 
2017-06-21 137.10 138.75 135.75  136.65 136.65 
2017-06-22 136.75 138.65 136.45  136.75 137.15 
2017-06-23 136.60 137.50 132.15  134.95 135.00 
2017-06-27 135.05 135.55 130.80  134.55 134.40 
2017-06-28 134.10 136.80 132.50  136.55 136.30 

這之前,我得到的數據降功能之後;我希望日期15-06-2017到23-06-2017完整的行數據被刪除,並且df只存儲第27,28行數據,在python3.6中完成它的有效方式是什麼?

+0

刪除行1,沒有索引?你能詳細解釋一下嗎? –

+0

爲什麼不使用iloc從特定索引中選擇行? –

回答

1

我想你需要由iloc選擇數據,如果需要通過位置或選擇boolean indexing如果需要選擇的範圍之外的日期:

df = df.iloc[7:] 
print (df) 
       Open High Low Adj Close Close 
Date            
2017-06-27 135.05 135.55 130.8  134.55 134.4 
2017-06-28 134.10 136.80 132.5  136.55 136.3 

df = df[(df.index > '2017-06-23') | (df.index < '2017-06-15')] 
print (df) 
       Open High Low Adj Close Close 
Date            
2017-06-27 135.05 135.55 130.8  134.55 134.4 
2017-06-28 134.10 136.80 132.5  136.55 136.3 

differenceisin

df = df.loc[df.index.difference(pd.date_range('2017-06-15','2017-06-23'))] 
print (df) 
       Open High Low Adj Close Close 
2017-06-27 135.05 135.55 130.8  134.55 134.4 
2017-06-28 134.10 136.80 132.5  136.55 136.3 

df = df[~df.index.isin(pd.date_range('2017-06-15','2017-06-23'))] 
print (df) 
       Open High Low Adj Close Close 
Date            
2017-06-27 135.05 135.55 130.8  134.55 134.4 
2017-06-28 134.10 136.80 132.5  136.55 136.3 

但是,如果真的需要drop

df = df.drop(df.loc['2017-06-15':'2017-06-23'].index) 
print (df) 
       Open High Low Adj Close Close 
Date            
2017-06-27 135.05 135.55 130.8  134.55 134.4 
2017-06-28 134.10 136.80 132.5  136.55 136.3 
0

您可以使用between

start_date = pd.to_datetime("15-06-2017") 
end_date = pd.to_datetime("23-06-2017") 
df[~df.reset_index().Date.between(start,end)] 

輸出中

 Date Open High Low Adj_Close Close 
7 2017-06-27 135.05 135.55 130.8  134.55 134.4 
8 2017-06-28 134.10 136.80 132.5  136.55 136.3