为何Pandas Series使用.loc[]与[]切片获取前n值结果不同?
Pandas Series两种切片结果不同的原因
这俩切片方式本质是位置索引和标签索引的区别,具体说:
[:n]是按元素位置切片:这里的n指的是「取前n个位置的元素」,从0开始计数,所以[:5]会取位置0到4的元素,刚好5个,对应索引标签0、1、2、3、4。.loc[:n]是按索引标签切片:它会包含所有标签从起始到n的元素,包括标签n本身。你的Series用的是默认整数索引,n=5对应的就是标签为5的元素,所以.loc[:5]会把标签0到5的元素全取出来,自然多了索引5的'l'。
拿你的例子对比:
my_s[:5]输出的是位置0-4的5个元素,对应索引0到4;my_s.loc[:5]输出的是标签0-5的6个元素,包含索引5的内容。
要是你的Series用了非连续整数或者非整数索引,这种差异会更突出。比如索引是[2,4,6,8],[:2]取前2个位置的元素(对应标签2、4),而.loc[:2]只会取标签≤2的元素(也就是标签2那一个)。
内容的提问来源于stack exchange,提问作者Emman
相关产品推荐
相关产品推荐

