现象如下图如示:
当x在append一个系列n后,通过位置索引,已无法找到值“one”,如上图中的从x[0]到x[3],新append的n被指向了两次,即x[0]和x[3],感觉在append系列n后,其index值是否不太正确?
后续:
经执行x.index及x.values命令,情况显示如下:
可能使用x.index查询每个位置索引的值,更为合适,如下:
此时通过位置索引获取的值正确。
通过上述操作对比,可能产生疑似bug的原因如下:
- 由于是基于Numpy,pandas的Series延续了Numpy的数组操作,但数组操作取值的优先级不同,即先取index存在的值,如果不存在index的值,那么再取基于位置索引的值。读取x[0]时,存在index为0的值,即新追加的n系列,所以此时x[0]的值为'22',读取x[1]时,不存在index为1的情况,此时读取位置索引为1的值,即x[1]=x['second']=2;
- 为避免基于位置索引读取系列值与基于index索引值的冲突,建议基于位置索引读取时采用x[[0]][0]的方法,而不是采取x[0]的方法,参考如下: