我似乎无法找到一个优雅的方式来索引一个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函数的括号中.
| 归档时间: |
|
| 查看次数: |
26270 次 |
| 最近记录: |