2012-07-23 206 views
9

我似乎无法找到一个整数索引index a pandas.DataFrame的优雅方式。 在下面的示例中,我想从'A'列的第一个元素中获取值“a”。用整数索引熊猫数据帧

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

我希望df['A'].ix[0]df['A'][10]都返回'a'df['A'][10]确实会返回'a',但df['A'].ix[0]会抛出KeyError: 0。我能想到的基于索引0获得值'a'的唯一方法是使用以下方法。

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

有一个较短的方式来获得'a'出来的数据帧,采用0指数?

更新

由于大熊猫0.11的还有另一种方式来index by integer

df.iloc[0] # integer based, gives the first row 
df.loc[10] # label based, gives the row with label 10 

supersedesirow方法。

回答

12

你,因为你的索引不会从0开始得到与df['A'].ix[0]一个错误,它开始于10。你可以让你通过正确的想用下面的

df['A'].ix[10] 
df['A'].irow(0) 

第一个使用的价值指数。第二个命令,我怀疑是你想要的,通过行号找到值,而不是索引值,技术上只有两个字符比如果df['A'].ix[0]工作。

或者,你可以重新索引,这样他们会为您期待df['A'].ix[0]的响应方式:

df2=df.reset_index() 

这将它们移动到列保存旧的指标(10,20,等)在df2数据帧中称为“索引”。然后df2['A'].ix[0]将返回'a'。如果要删除旧的基于10的索引,可以将标志drop=True插入到reset_index函数的括号中。

+0

我认为它是'df ['A']。iget(0)'因为'df ['A']'是一个没有'irow'的'Series'。 – Eike 2013-03-09 19:40:15

+3

irow()已弃用。使用iloc []进行基于位置的索引。 – herrlich10 2014-02-07 03:57:40

0

在较新的熊猫版本中,你也可以使用df [“A”]。iat(0)。