2017-03-17 28 views
1

假設我有一個數據幀,其中行由交易收錄天,所以像:選擇行開始具有一定的指標值

Date   ClosingPrice 
2017-3-16  10.00 
2017-3-17  10.13 
2017-3-20  10.19 
    ... 

我想找到$ N $ (比如說)2017-2-28開始的行,所以我不知道日期範圍,我只知道我想做十行下的東西。做這件事最優雅的方式是什麼? (有很多難看的方法......)

回答

2

我快速解答

s = df.Date.searchsorted(pd.to_datetime('2017-2-28'))[0] 
df.iloc[s:s + 10] 

演示

df = pd.DataFrame(dict(
     Date=pd.date_range('2017-01-31', periods=90, freq='B'), 
     ClosingPrice=np.random.rand(90) 
    )).iloc[:, ::-1] 

date = pd.to_datetime('2017-3-11') 
s = df.Date.searchsorted(date)[0] 
df.iloc[s:s + 10] 

     Date ClosingPrice 
29 2017-03-13  0.737527 
30 2017-03-14  0.411525 
31 2017-03-15  0.794309 
32 2017-03-16  0.578911 
33 2017-03-17  0.747763 
34 2017-03-20  0.081113 
35 2017-03-21  0.000058 
36 2017-03-22  0.274022 
37 2017-03-23  0.367831 
38 2017-03-24  0.100930 

天真的時間測試

enter image description here

+0

這看起來是正確的,但對於我們之間的穴居人來說:第一行'iloc'裏面的口頭禪是什麼? –

+0

我不喜歡數據框架構造首先把ClosingPrice。所以我強制顛倒了列的順序 – piRSquared

+0

熊貓成語需要一點時間習慣......謝謝! –

2
df[df['Date'] >= Date(2017,02,28)][:10] 

我猜?

+1

'df [df ['Date']> = Date(date.split(「,」)] [:10]。 #日期是一些變量# – putonspectacles

+0

這是一個很好的解決方案! –