2015-02-07 49 views
1

我有以下數據框:如何確定大熊貓特定記錄的行數據幀

data = {'level1':[20,19,20,21,25,29,30,31,30,29,31], 
     'level2': [10,10,20,20,20,10,10,20,20,10,10]} 
index = pd.date_range('12/1/2014', periods=11) 
frame = pd.DataFrame(data, index=index) 

In [75]: frame 
Out[75]: 
level1 level2 
2014-12-01 20 10 
2014-12-02 19 10 
2014-12-03 20 20 
2014-12-04 21 20 
2014-12-05 25 20 
2014-12-06 29 10 
2014-12-07 30 10 
2014-12-08 31 20 
2014-12-09 30 20 
2014-12-10 29 10 
2014-12-11 31 10 

我想借一本框架的「細胞」,並找出它是在哪一行。

換句話說,frame.level1[4]."rownumber"()

什麼是整數行號?想要的答案是4

注意:我知道這是循環的,最終目標是將其放入公式中,以便使用相對導航來獲取另一個「單元格」。

#pseudocode 
def rowgetter(x) 
    priorvalue =frame.at[index[rownumber(x)-1],'level1']#pseudocode 
    priorvalue += 10 #or something 

and then 
rownmums=frame.level1.map(rowgetter) 

結果會是什麼樣子

nan(?) 
30 
29 
30 
31 
35 
39 
40 
41 
40 
39 

我之所以這麼問,這是我不能get shift to work in a formula,但即使在鏈接的問題的答案,我覺得這問題本身就很有趣。

回答

0

你可以使用argwhere

In [11]: np.argwhere((frame.level1 == 25).values)[0][0] 
Out[11]: 4 

argmax

In [12]: np.argmax((frame.level1 == 25).values) 
Out[12]: 4 

注意:如果沒有找到匹配,這將不會提高,但你可以在一些檢查包裝它(即在這個位置的價值是25)。

我不認爲有一種方法來查找不==特定值(我想這是類似於this question

+0

感謝安迪,但我需要的是略有不同,我不打算傳遞實際值(例如25),但數據框架元素,並在一個函數內,我補充說,這個問題,也許它不清楚,另一個問題是,我的價值觀不是唯一的,所以我不能看在我的示例中爲值30設置唯一行(因爲它在frame.level1中是兩次) – 2015-02-07 18:21:25