2017-02-12 653 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) 

因此元素恰好证明他们所在