Python:按列表分割数据帧会返回比预期更长的列表

Python:按列表分割数据帧会返回比预期更长的列表,python,multi-index,numpy-slicing,Python,Multi Index,Numpy Slicing,我有517个元组的列表。当我使用该列表使用.loc对我的数据帧进行切片时,不知何故总共有518行。如果很重要的话,这些是一个多索引的517个元组。目视检查结果似乎没有明显的标题或空行 print(submatrix2.shape) x = list(get_list_of_university_towns().itertuples(index=False, name=None)) print(len(x)) univ_matrix = submatrix2.loc[x,] print(univ

我有517个元组的列表。当我使用该列表使用.loc对我的数据帧进行切片时,不知何故总共有518行。如果很重要的话,这些是一个多索引的517个元组。目视检查结果似乎没有明显的标题或空行

print(submatrix2.shape)
x = list(get_list_of_university_towns().itertuples(index=False, name=None))
print(len(x))
univ_matrix = submatrix2.loc[x,] 
print(univ_matrix.shape)
产出:

(10730, 1)
517
(518,1)

是什么导致了这种不匹配

您可能有一个重复的索引,它允许您的最终形状大于传递的列表

可复制示例:

df = pd.DataFrame({'vals':["a", "b", "c", "d"],
                   'n':[0,1,1,2]})

df = df.set_index('n')


    vals
n   
0   a
1   b
1   c
2   d
现在


多指标是国家、地区。在完整的数据集中,似乎不可能有两个区域处于相同的状态,名称相同。此外,您的示例没有使用元组来调用multi-index.Welp,您是正确的。两个克林顿,纽约。也许我自己会发现这一点。谢谢你说得对。
>>> x=[0,1,2];len(x)
3
>>> df.loc[x,:].shape
(4, 1)