2016-12-17 65 views

回答

5

没有,基于位置的索引具有包容端点pandas数据结构。见Caveats and Gotchas.

与标准的Python序列切片,其中切片 端点不是包容性相比,大熊猫基于标签的切片是包容。 主要原因在于,通常不可能容易地确定 索引中的特定标签之后的“后继”或下一个元素。

如果使用整数位置基于索引,像iloc,这会像香草python的数据结构:

In [5]: df 
Out[5]: 
    0 1 2 3 
0 1 21 51 61 
1 2 22 52 62 
2 3 23 53 63 

In [6]: df.iloc[0:0] 
Out[6]: 
Empty DataFrame 
Columns: [0, 1, 2, 3] 
Index: [] 

In [7]: df.loc[0:0] 
Out[7]: 
    0 1 2 3 
0 1 21 51 61 

In [8]: 
+0

非常好的答案。然而,这种行为是令人沮丧和不直观的 – mwm314

+0

不是正确的论坛来问这个问题。但是,如果切片被禁用/提出错误,平均开发人员会更高兴,而不是给出稍微不同的行为! –

+1

@Ajeet不,基于位置的切片是惊人的,会让任何开发者更开心。如果他们阅读文档,普通开发人员会更开心。 –

1

切片通常是在第一索引包容性和排他性上的第二个。例如:

x = [1,2,3,4,5] 
print x[0:0] 
# prints [], the empty list. 

然而,说平原日在开始和结束索引都包括用于loc功能文档:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.loc.html

用标签切片对象,例如'a':'f'(注意,与通常的蟒蛇片 相反,开始和结束都包括在内!)。

为什么熊猫想要这样的巨魔?只有天知道。

+0

他们为什么会引入与语言语义不一致的行为? –

+1

我不确定,我现在也有些脾气暴躁。直到你发布它,我实际上并不知道这一点(我不经常使用Panda,只是纯粹的numpy通常会为我制造诡计) – mwm314

相关问题