如何在Pandas中找到元素时查找列号

时间:2018-03-16 08:46:35

标签: python pandas dataframe

我在pandas数据框中读过excel文件。我正在迭代索引列,将行的每个元素与某个值进行比较。当我找到匹配项时,我需要找到匹配项的列号。

示例:

df = pd.DataFrame({'A': [0, 0, 2, 1], 'B': [1,2,3,4], 'C' : [5,7,2,5]})
print df

    A  B  C
 0  0  1  5
 1  0  2  7
 2  2  3  2
 3  1  4  5

如果我找到了元素3的匹配项,我应该可以打印' B'以及B的列号,即1。 怎么实现呢? 谢谢!

3 个答案:

答案 0 :(得分:1)

我认为应该有多个匹配,因此可以使用any过滤至少一个匹配,然后为所有index获取s True并选择[]的第一个值按列名称使用Index.get_loc

s = (df == 3).any()
print (s)   
A    False
B     True
C    False
dtype: bool

a = s.index[s]
print (a[0])
B

print (df.columns.get_loc(a[0]))
1

编辑:

df = pd.DataFrame({'A': [0, 0, 2, 1], 'B': [1,2,3,4], 'C' : [5,2,3,5]})
print (df)
  A  B  C
0  0  1  5
1  0  2  2
2  2  3  3
3  1  4  5

s = (df == 3).any()
print (s)  
A    False
B     True
C     True
dtype: bool

a = s.index[s]
print (a)
Index(['B', 'C'], dtype='object')

print (df.columns.get_indexer(a))
[1 2]

答案 1 :(得分:1)

使用np.where。它会为您提供所有匹配的行和相应的列位置

i, j = np.where(df.values == 3)

j

array([1])

如果您想要列标签

df.columns[j]

Index(['B'], dtype='object')

答案 2 :(得分:0)

for da in df.index.values:
   for i,d in df.loc[data].items():
     print i

此处i将打印列号。