Python 数据帧loc索引的切片行为不正确

Python 数据帧loc索引的切片行为不正确,python,pandas,Python,Pandas,我认为[0:0]的loc切片应该产生空输出。是虫子吗 >>> df 0 1 2 3 0 1 21 51 61 1 2 22 52 62 2 3 23 53 63 >>> df.loc[0:0] 0 1 2 3 0 1 21 51 61 不,基于位置的索引具有pandas数据结构的包含端点。看 与标准的Python序列切片相比 端点不包含在内,熊猫中基于标签的切片包含在内。 这样做的主要原因是

我认为[0:0]的loc切片应该产生空输出。是虫子吗

>>> df
   0   1   2   3
0  1  21  51  61
1  2  22  52  62
2  3  23  53  63
>>> df.loc[0:0]
   0   1   2   3
0  1  21  51  61

不,基于位置的索引具有
pandas
数据结构的包含端点。看

与标准的Python序列切片相比 端点不包含在内,熊猫中基于标签的切片包含在内。 这样做的主要原因是,通常不可能轻松地 确定中特定标签后的“后续”或下一个元素 索引

如果使用基于整数位置的索引,如
iloc
,其行为将类似于vanilla
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]:

不,基于位置的索引具有
pandas
数据结构的包含端点。看

与标准的Python序列切片相比 端点不包含在内,熊猫中基于标签的切片包含在内。 这样做的主要原因是,通常不可能轻松地 确定中特定标签后的“后续”或下一个元素 索引

如果使用基于整数位置的索引,如
iloc
,其行为将类似于vanilla
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]:

切片通常在第一个索引上包含,在第二个索引上独占。例如:

x = [1,2,3,4,5]
print x[0:0]
# prints [], the empty list.
但是,文档中明确指出,开始索引和结束索引都包含在
loc
功能中:

带有标签的切片对象,例如“A”:“f”(注意,与通常相反 python切片,包括开始和停止!)


为什么熊猫要这样欺负你?只有上帝知道。

切片通常在第一个索引上包含,在第二个索引上独占。例如:

x = [1,2,3,4,5]
print x[0:0]
# prints [], the empty list.
但是,文档中明确指出,开始索引和结束索引都包含在
loc
功能中:

带有标签的切片对象,例如“A”:“f”(注意,与通常相反 python切片,包括开始和停止!)


为什么熊猫要这样欺负你?只有上帝知道。

他们到底为什么会引入一种与语言语义不一致的行为???我不确定,我现在也有点暴躁。事实上,在你发布之前我并不知道这一点(我不经常使用Panda的,只是纯numpy通常会帮我玩这个把戏)到底为什么他们会引入与语言语义不一致的行为???我不确定,我现在也有点暴躁。我其实不知道这一点,直到你发布它(我不经常使用熊猫的,只是纯numpy通常会为我做的把戏)非常好的答案。然而,这种行为令人沮丧且不直观,不是提出这个问题的合适论坛。但是,如果切片被禁用/引发错误,一般开发人员会比给出稍微不同的行为更高兴@不,基于位置的切片是令人惊奇的,它会让任何开发人员更快乐。如果普通的开发人员阅读文档,他们会更高兴。我喜欢python,因为我不必为预期的行为阅读文档。就我个人而言,我不喜欢不一致的切片,而且我确信还存在未知的错误。我刚刚发现这导致了我程序中的错误!谢谢你的解释!回答得很好。然而,这种行为令人沮丧且不直观,不是提出这个问题的合适论坛。但是,如果切片被禁用/引发错误,一般开发人员会比给出稍微不同的行为更高兴@不,基于位置的切片是令人惊奇的,它会让任何开发人员更快乐。如果普通的开发人员阅读文档,他们会更高兴。我喜欢python,因为我不必为预期的行为阅读文档。就我个人而言,我不喜欢不一致的切片,而且我确信还存在未知的错误。我刚刚发现这导致了我程序中的错误!谢谢你的解释!