我想根据列表重设索引
让我说我有这样的数据框
list = ['RGB','RBR','RGD']
a b
RBR 0 1
RGD 10 2
RGB 11 3
RGD 10 2
RGD 10 2
RGD 10 2
RBR 0 1
RGB 11 3
df.reindex(index = list)
文件 “ c:\ users \ yugas \ appdata \ local \ programs \ python \ python36 \ lib \ site-packages \ pandas \ core \ indexes \ base.py”, 第3560行,在_can_reindex中 引发ValueError(“无法从重复的轴重新索引”)
ValueError:无法从重复的轴重新索引
还有其他方法可以做到吗?
答案 0 :(得分:2)
不要重新索引,只需使用.loc
即
li = ['RGB','RBR','RGD']
df = df.loc[li]
a b
RGB 11 3
RGB 11 3
RBR 0 1
RBR 0 1
RGD 10 2
RGD 10 2
RGD 10 2
RGD 10 2
答案 1 :(得分:1)
您的索引中有重复的值。 pd.DataFrame.reindex
要求您的索引必须唯一。
Categorical Data是Pandas可用的一种有效解决方案,请小心指定ordered=True
。
L = ['RGB', 'RBR', 'RGD']
df.index = pd.Categorical(df.index, categories=L, ordered=True)
res = df.sort_index()
print(res)
a b
RGB 11 3
RGB 11 3
RBR 0 1
RBR 0 1
RGD 10 2
RGD 10 2
RGD 10 2
RGD 10 2