2017-06-29 12 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