按整数索引pandas数据帧

Sig*_*gyF 11 python pandas

我似乎无法找到一个优雅的方式来索引一个pandas.DataFrame由整数索引.在下面的示例中,我想从'A'列的第一个元素中获取值'a' .

import pandas
df = pandas.DataFrame(
    {'A':['a','b', 'c'], 'B':['f', 'g', 'h']}, 
    index=[10,20,30]
    )
Run Code Online (Sandbox Code Playgroud)

我希望df['A'].ix[0]df['A'][10]两者都回来'a'.将df['A'][10]不会返回'a',而是df['A'].ix[0]抛出一个KeyError: 0.我能想到的'a'基于索引0 获取值的唯一方法是使用以下方法.

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

'a'使用0索引是否有更短的方法退出数据框?

更新

从pandas 0.11开始,还有另一种方法可以按整数进行索引.

df.iloc[0] # integer based, gives the first row
df.loc[10] # label based, gives the row with label 10
Run Code Online (Sandbox Code Playgroud)

取代了这种irow方法.

Mic*_*ill 13

您收到错误,df['A'].ix[0]因为索引不是从0开始,而是从10开始.您可以使用以下任一项获得所需的值

df['A'].ix[10]
df['A'].irow(0)
Run Code Online (Sandbox Code Playgroud)

第一个使用正确的索引.第二个命令,我怀疑是你想要的,通过行号而不是索引值来查找值,技术上只比df['A'].ix[0]工作时长两个字符.

或者,您可以重置索引,以便它们以您期望的方式响应df['A'].ix[0]:

df2=df.reset_index()
Run Code Online (Sandbox Code Playgroud)

这将通过将它们移动到df2数据框中名为"index"的列中来保留旧索引(10,20等).然后df2['A'].ix[0]将返回'a'.如果要删除旧的基于10的索引,可以将该标志drop=True插入reset_index函数的括号中.

  • irow()已弃用.使用iloc []进行基于位置的索引. (3认同)