11

我似乎找不到一种通过整数索引索引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. 我能想到的'a'根据索引 0 获取值的唯一方法是使用以下方法。

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

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

更新

从 pandas 0.11 开始,还有另一种按 integer 索引的方法。

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

取代了该irow方法。

4

2 回答 2

14

您收到错误,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()

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

于 2012-07-24T00:38:29.687 回答
0

在较新的 pandas 版本中,您还可以使用 df["A"].iat(0)。

于 2017-12-25T12:54:18.327 回答