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

时间:2017-07-28 14:53:27

标签: python pandas

要在数据框0中获取整数位置'A'和列标签df的标量,我会链接索引:df.iloc[0]['A']。这有效,但是pandas文档说chained indexing should be avoided

我可以提出的另一种选择是df.iat[0, df.columns.get_loc('A')],与链式索引相比,它的输入太多了。有没有更短的方法来做到这一点?

注意: .ix索引器已弃用。

示例:

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

    A
------
3   10
2   20
1   30
0   40

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

1 个答案:

答案 0 :(得分:2)

您可以参考loc, iloc, at, iat

上的其他帖子

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

要解决此问题,我们需要翻译:

  • 在标签中的位置,然后使用loc(或at)进行标签索引。
  • 将标签放入某个位置,然后使用iloc(或iat)进行排名索引。

使用loc

我们在0位置

获得标签
df.loc[df.index[0], 'A']

或者

df.at[df.index[0], 'A']

或者

df.get_value(df.index[0], 'A')

使用iloc
我们使用pd.Index.get_loc

获取标签的位置
df.iloc[0, df.columns.get_loc('A')]

或者

df.iat[0, df.columns.get_loc('A')]

或者

df.get_value(0, df.columns.get_loc('A'), takable=True)

我还提供了使用pd.DataFrame.get_value

的示例