如何在多索引pandas Dataframe中查找索引的实际行号,其中索引不是唯一的

时间:2017-11-30 17:24:30

标签: python pandas dataframe multi-index

p是一个pandas数据框,在Spyder控制台中查找如下:

 java.lang.NoSuchFieldException: mTitleTextView
        at java.lang.Class.getDeclaredField(Class.java:631)

在Spyder数据资源管理器中,p如下所示: enter image description here

我可以访问与'文件相对应的元素'专栏和' new_lines'行为:

In [1]: p
Out[1]: 
                                     ncloc        files
ncloc     Correlation Coefficient     1.000000     0.500000
NaN       Sig. (2-tailed)                  NaN     0.000000
          N                        1600.000000  1600.000000
new_lines Correlation Coefficient     0.021537     0.021873
NaN       Sig. (2-tailed)             0.242349     0.238163
          N                        1600.000000  1600.000000
classes   Correlation Coefficient     0.978614     0.993551
NaN       Sig. (2-tailed)             0.000000     0.000000
          N                        1600.000000  1600.000000

但输出的类型为' pandas.core.series.Series'。

我也可以访问数值(类型:numpy.float64):

In [2]: p['files']['new_lines']
Out[2]: 
Correlation Coefficient    0.5
Name: files, dtype: float64

现在,我如何找出索引的实际行号' new_lines'在p是3?

我可以编写一个for循环来查找它,但应该有一种非常简单的方法来查找索引的行号' new_lines'。

找到这个的for循环方式如下:

In [3]: p['files'][3]
Out[3]: 0.5

所以,我有我的结果,即r_index变量中的行号。如何更有效地完成这项操作?

1 个答案:

答案 0 :(得分:0)

您可以使用get_loc

实施例

import pandas as pd

df = pd.DataFrame(
    {'ncloc': [1, 0], 'files': [0.5, 2]},
    index=['lines', 'new_lines'])

print(df.index.get_loc('new_lines'))

>>> 1