返回pandas datafram中特定值的列名

2024-06-06 18:22:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我在其他语言(如R或SQL)中找到了这个选项,但我不太确定如何在Pandas中实现它。

因此,我有一个包含1262列和1行的文件,需要每次出现特定值时都返回列标题。

例如,假设此测试数据帧:

Date               col1    col2    col3    col4    col5    col6    col7 
01/01/2016 00:00   37.04   36.57   35.77   37.56   36.79   35.90   38.15 

我需要找到列名,例如,where value=38.15。最好的方法是什么?

谢谢


Tags: 文件语言标题pandassqldate选项col2
3条回答

由于只有一行,因此可以对结果调用iloc[0],并使用此函数来屏蔽列:

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

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

分解以上内容:

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

也可以将^{}与参数axis=1一起使用:

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

Out[52]:
'col7'

只是为了把一些不同的东西扔进拳击场:

row = df.iloc[0]
row.reset_index().set_index(0).loc[38.15]

可以使用数据帧切片,然后获取列名称:

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

输出:

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

相关问题 更多 >