如何从数据框中检索行名和列名?

Posted

技术标签:

【中文标题】如何从数据框中检索行名和列名?【英文标题】:How to retrieve row and column names from data frame? 【发布时间】:2017-04-14 03:30:57 【问题描述】:

我已经使用 pandas.corr 从数据框生成了一个相关矩阵:

cmat = sub1.corr()

cmat
Out[75]: 
          CESI001   CESI002   CESI003   CESI004
CESI001  1.000000  0.829723  0.046925  0.074475
CESI002  0.829723  1.000000  0.066766  0.073181
CESI003  0.046925  0.066766  1.000000 -0.098427
CESI004  0.074475  0.073181 -0.098427  1.000000

我要做的是生成一个由 [行、列、值] 组成的新数据框,其中单元格值符合某些条件。我已成功检索到匹配的单元格值:

for i2,r2 in cmat.iterrows():
for item in cmat[i2]:
    if ((item > 0.3) and (item < 0.9)):
        print (item)

这正确产生:

0.829723365019
0.829723365019

但是,我无法从那里向后检索行名和列名。我尝试了 .loc、.columname 和其他几种我在这里读到的方法。我知道 Python 更多的是对整个数据框进行操作。任何指导表示赞赏。

【问题讨论】:

【参考方案1】: stack 排列行和列 query 过滤你需要的东西
cmat.stack().to_frame('item').query('.3 < item < .9')

【讨论】:

以上是关于如何从数据框中检索行名和列名?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据行名和列名的比较构建方阵

DataTable:如何使用行名和列名获取项目值? (五)

在 python 中读取矩阵并获取行名和列名

如何从数据框中选择一些具有特定行名的行? [关闭]

R获取矩阵中每一行的最小值,并返回行名和列名

按行名过滤矩阵的嵌套列表