通过整数位置和列标签获取标量(混合索引)

Ser*_*kov 5 python pandas

要获取整数位置的标量0和列标签'A'的数据帧df,我做链接的索引:df.iloc[0]['A']。这是有效的,但 Pandas 文档说应该避免链接索引

我能想到的另一种方法是df.iat[0, df.columns.get_loc('A')],与链式索引相比,它的类型太多了。有没有更短的方法来做到这一点?

注意:不推荐使用 .ix 索引器。

例子:

df=pd.DataFrame({'A':[10,20,30,40]}, index=[3,2,1,0])

    一种
------
3 10
2 20
1 30
0 40

0列中整数位置的标量A10而不是40
df.iat[0, df.columns.get_loc('A')]
Otuput:10

piR*_*red 6

你可以参考这篇关于, , , 的另一篇文章locilocatiat


直接回答您的问题:
这称为混合类型索引。您想通过位置访问一个维度,通过标签访问另一个维度。

为了解决这个问题,我们需要翻译:

  • 将位置放入标签,然后使用loc(或at) 进行标签索引。
  • 将标签放入一个位置,然后使用iloc(或iat) 进行位置索引。

使用 loc

我们得到了0位置的标签

df.loc[df.index[0], 'A']
Run Code Online (Sandbox Code Playgroud)

或者

df.at[df.index[0], 'A']
Run Code Online (Sandbox Code Playgroud)

或者

df.get_value(df.index[0], 'A')
Run Code Online (Sandbox Code Playgroud)

使用iloc
我们得到标签的位置使用pd.Index.get_loc

df.iloc[0, df.columns.get_loc('A')]
Run Code Online (Sandbox Code Playgroud)

或者

df.iat[0, df.columns.get_loc('A')]
Run Code Online (Sandbox Code Playgroud)

或者

df.get_value(0, df.columns.get_loc('A'), takable=True)
Run Code Online (Sandbox Code Playgroud)

我还包括使用的例子 pd.DataFrame.get_value