按整数索引pandas数据帧

问题描述 投票:11回答:2

我似乎找不到一个优雅的方式来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方法。

python pandas
2个回答
13
投票

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函数的括号中。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.