Return the column name(s) for a specific value in a pandas dataframe

Seeing as you only have a single row then you can call iloc[0] on the result and use this to mask the columns:

In [47]:
df.columns[(df == 38.15).iloc[0]]

Out[47]:
Index(['col7'], dtype='object')

Breaking down the above:

In [48]:
df == 38.15

Out[48]:
             Date   col1   col2   col3   col4   col5   col6  col7
01/01/2016  False  False  False  False  False  False  False  True

In [49]:
(df == 38.15).iloc[0]

Out[49]:
Date    False
col1    False
col2    False
col3    False
col4    False
col5    False
col6    False
col7     True
Name: 01/01/2016, dtype: bool

You can also use idxmax with param axis=1:

In [52]:
(df == 38.15).idxmax(axis=1)[0]

Out[52]:
'col7'

You can use data frame slicing and then get the columns names:

df.ix[:,df.loc[0] == 38.15].columns

output:

Index([u'col7'], dtype='object')

Tags:

Python

Pandas