我似乎找不到一个优雅的方式来index 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]]
使用0索引有没有更短的方法将'a'
从数据帧中删除?
更新
从大熊猫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
这supersedes irow
方法。
df['A'].ix[0]
出错,因为索引不是从0开始,而是从10开始。您可以使用以下任一方法获得所需的值
df['A'].ix[10]
df['A'].irow(0)
第一个使用正确的索引。第二个命令,我怀疑是你想要的,通过行号而不是索引值来查找值,技术上只比df['A'].ix[0]
工作时长两个字符。
或者,您可以重置索引,以便它们以df['A'].ix[0]
的预期方式响应:
df2=df.reset_index()
这将通过将它们移动到df2数据框中名为“index”的列中来保留旧索引(10,20等)。然后df2['A'].ix[0]
将返回'a'。如果要删除旧的基于10的索引,可以将标志drop=True
插入reset_index函数的括号中。
在较新的熊猫版本中你也可以使用df [“A”]。iat(0)。