2017-02-12 652 views
1

我很掙扎,因爲我沒有找到在哪裏以及如何得到我的DataFrame的行號和列號這樣的索引。然後我解決了這個問題,並編寫了一個可以完成這項工作的代碼,並考慮在這裏分享它作爲問題的答案。而且,如果有更簡單的方法,人們可以增加價值作爲答案。如何獲取所有給定DataFrame(Pandas)中某個元素的位置?

假設你正在給這個數據幀,並想找到在哪裏2出現在那個特定的數據幀(DF)

d = {'one' : [1., 2., 3., 4.], 
    ....:  'two' : [4., 3., 2., 1.]} 
df=pd.DataFrame(d, index=['a', 'b', 'c', 'd']) 

有沒有辦法說,它位於df.ix[1,0]df.ix[2,1]

+0

'列表(df.stack()[df.stack()== 2]的.index)'與確切的列和索引值,或使用'np.column_stack(np.where (DF = 2))'職位? – Zero

回答

0

要獲得的行,列對元組關於indexcolumns對象的值

s = df.eq(2).stack() 
s[s].index.values 

array([('b', 'one'), ('c', 'two')], dtype=object) 

要獲得職位,構建一個新的da taframe而不指數或列

s = pd.DataFrame(df.values).eq(2).stack() 
s[s].index.values 

array([(1, 0), (2, 1)], dtype=object) 
1

考慮這件事後,我到達我寫了一個函數

def Get_indcies(df,b): 
    t=np.where(df.values == b) 
    return np.column_stack((t[0],t[1])) 

在這種情況下,答案應該是

t=Get_indcies(df,2) 

會給你

array([[1, 0], 
     [2, 1]], dtype=int64) 

因此元素恰好證明他們所在