Python 基于数据帧值获取列名称和索引

Python 基于数据帧值获取列名称和索引,python,pandas,Python,Pandas,我有这样的数据帧df_corr A2M.AX ABC.AX AGL.AX AHY.AX ALL.AX AMC.AX AMP.AX A2M.AX 1.000000 -0.505433 0.687367 0.223044 -0.664764 -0.199477 ABC.AX -0.505433 1.000000 -0.801770 -0.606418 0.860923 0.332359 AGL.AX 0.687367 -0.801

我有这样的数据帧df_corr

  A2M.AX    ABC.AX    AGL.AX    AHY.AX    ALL.AX    AMC.AX    AMP.AX  
A2M.AX  1.000000 -0.505433  0.687367  0.223044 -0.664764 -0.199477   
ABC.AX -0.505433  1.000000 -0.801770 -0.606418  0.860923  0.332359   
AGL.AX  0.687367 -0.801770  1.000000  0.394378 -0.917379 -0.193461  
AHY.AX  0.223044 -0.606418  0.394378  1.000000 -0.483766 -0.063892  
ALL.AX -0.664764  0.860923 -0.917379 -0.483766  1.000000  0.177633   
我想根据值获取索引和列名 这是我的尝试:

df_corr[(df_corr>0.7)&(df_corr<1)]


 A2M.AX    ABC.AX    AGL.AX    AHY.AX    ALL.AX  AMC.AX    AMP.AX  

ABC.AX       NaN       NaN       NaN       NaN  0.860923     NaN  
AGL.AX       NaN       NaN       NaN       NaN       NaN     NaN        
AHY.AX       NaN       NaN       NaN       NaN       NaN     NaN       
ALL.AX       NaN  0.860923       NaN       NaN       NaN     NaN  

使用
stack
重塑/透视数据帧,并将索引转换为多索引:

df_corr[(df_corr>0.7)&(df_corr<1)].stack()
Out[79]: 
A2M.AX        
ABC.AX  AMC.AX    0.860923
ALL.AX  AGL.AX    0.860923
dtype: float64

df_corr[(df_corr>0.7)&(df_corr<1)].stack().index.values
Out[80]: array([('ABC.AX', 'AMC.AX'), ('ALL.AX', 'AGL.AX')], dtype=object)

df_corr[(df_corr>0.7)和(df_corr>0.7)和(df_corr使用
stack
来重塑/透视数据帧,并将索引转换为多索引:

df_corr[(df_corr>0.7)&(df_corr<1)].stack()
Out[79]: 
A2M.AX        
ABC.AX  AMC.AX    0.860923
ALL.AX  AGL.AX    0.860923
dtype: float64

df_corr[(df_corr>0.7)&(df_corr<1)].stack().index.values
Out[80]: array([('ABC.AX', 'AMC.AX'), ('ALL.AX', 'AGL.AX')], dtype=object)

df_corr[(df_corr>0.7)&(df_corr>0.7)&(df_corr这里有一种使用NumPy索引的方法,它避免了对数据帧进行子集

import numpy as np

condition = df.gt(0.7) & df.lt(1)

x, y = map(list, zip(*np.where(condition.values)))

res = list(zip(df.index[x], df.columns[y]))

[('ABC.AX', 'AMC.AX'), ('ALL.AX', 'AGL.AX')]

这里有一种使用NumPy索引的方法,可以避免对数据帧进行子集

import numpy as np

condition = df.gt(0.7) & df.lt(1)

x, y = map(list, zip(*np.where(condition.values)))

res = list(zip(df.index[x], df.columns[y]))

[('ABC.AX', 'AMC.AX'), ('ALL.AX', 'AGL.AX')]

请更好地解释这一点;重塑/旋转数据框,并将索引转换为多索引,例如
('ABC.AX','AMC.AX')
请更好地解释这一点;重塑/旋转数据框,并将索引转换为多索引,例如
('ABC.AX','AMC.AX'))
您的输出应该是nx2数据帧、多索引、列表还是什么?您的输出应该是nx2数据帧、多索引、列表还是什么?