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')