Python 熊猫找到了row+;具有条件的元素的列名称
我有一个关联的数据框架。我在数据框中搜索,找到大于阈值Python 熊猫找到了row+;具有条件的元素的列名称,python,pandas,numpy,Python,Pandas,Numpy,我有一个关联的数据框架。我在数据框中搜索,找到大于阈值0.5的相关性,然后返回符合条件的元素的列名和行名(都是字符串) 目前,我可以将相关矩阵转换为大于阈值的值,然后使用以下方法将所有其他值转换为NaN: 相关性[np.abs(相关性)>0.5] 现在我有了这个匹配查询和NaNs的数字矩阵,如何获得值不是NaN的每个元素的行+列名称?我相信您需要创建系列,然后为新列命名,为多索引中的列命名: np.random.seed(456) correlations = pd.DataFrame(np
0.5
的相关性,然后返回符合条件的元素的列名和行名(都是字符串)
目前,我可以将相关矩阵转换为大于阈值的值,然后使用以下方法将所有其他值转换为NaN
:
相关性[np.abs(相关性)>0.5]
现在我有了这个匹配查询和NaN
s的数字矩阵,如何获得值不是NaN
的每个元素的行+列名称?我相信您需要创建系列
,然后为新列命名,为多索引中的列命名:
np.random.seed(456)
correlations = pd.DataFrame(np.random.rand(5,3), columns=list('ABC'))
print (correlations)
A B C
0 0.248756 0.163067 0.783643
1 0.808523 0.625628 0.604114
2 0.885702 0.759117 0.181105
3 0.150169 0.435679 0.385273
4 0.575710 0.146091 0.686593
s = correlations.stack()
df = s[np.abs(s) > 0.5].rename_axis(('idx','col')).reset_index(name='val')
print (df)
idx col val
0 0 C 0.783643
1 1 A 0.808523
2 1 B 0.625628
3 1 C 0.604114
4 2 A 0.885702
5 2 B 0.759117
6 4 A 0.575710
7 4 C 0.686593
详细信息:
print (s)
0 A 0.248756
B 0.163067
C 0.783643
1 A 0.808523
B 0.625628
C 0.604114
2 A 0.885702
B 0.759117
C 0.181105
3 A 0.150169
B 0.435679
C 0.385273
4 A 0.575710
B 0.146091
C 0.686593
dtype: float64
或者您可以使用melt
correlations.where(correlations.abs().gt(0.5)).reset_index().melt('index').dropna()
Out[357]:
index variable value
1 1 A 0.808523
2 2 A 0.885702
4 4 A 0.575710
6 1 B 0.625628
7 2 B 0.759117
10 0 C 0.783643
11 1 C 0.604114
14 4 C 0.686593