如何在所有给定的DataFrame(Pandas)中获取某个元素的位置?

时间:2017-02-12 14:31:31

标签: python pandas jupyter-notebook

我很挣扎,因为我没有找到哪里以及如何获得像我的DataFrame的行号和列号这样的索引。然后我解决了这个问题,编写了一个可以完成这项工作的代码,并考虑在这里分享它作为问题的答案。而且,如果有一种更简单的方法可以增加价值作为答案。

假设您获得了此数据框,并希望找到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]

3 个答案:

答案 0 :(得分:2)

在考虑之后我到达了下面我写了一个函数

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)

因此元素显示它们的确切位置

答案 1 :(得分:0)

将行,列对作为元组相对于indexcolumns对象的值

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

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

要获取位置,请构建一个没有索引或列的新数据框

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

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

答案 2 :(得分:0)

for row in range(0,df.shape[0]):

    s = df.eq(value-what you want to serch).stack()
    print(s[s].index.values)