重新索引具有重复索引值

时间:2015-06-22 18:14:35

标签: python pandas reindex

所以我将4个csv导入并合并到一个名为data的数据帧中。但是,在使用以下方法检查数据框的索引时

index_series = pd.Series(data.index.values)
index_series.value_counts()

我看到多个索引条目有4个计数。我想完全重新索引数据数据框,因此每行现在都有一个唯一的索引值。我试过了:

data.reindex(np.arange(len(data)))

给出了错误" ValueError:无法从重复轴重新索引。"谷歌搜索让我认为这个错误是因为最多有4行共享相同的索引值。知道如何在不丢弃任何行的情况下重新编制索引吗?我并不特别关心行的顺序,因为我总是可以对它进行排序。

更新: 所以最后我确实找到了一种像我想要的那样重新索引的方法。

data['index'] = np.arange(len(data))
data = data.set_index('index')

据我了解,我刚刚添加了一个名为' index'到我的数据框,然后将该列设置为我的索引。 至于我的csv,它们是下载贷款数据的四个csv"在this page of Lending Club loan stats

1 个答案:

答案 0 :(得分:7)

使用此示例数据复制错误非常容易:

In [92]: data = pd.DataFrame( [33,55,88,22], columns=['x'], index=[0,0,1,2] )

In [93]: data.index.is_unique
Out[93]: False

In [94:] data.reindex(np.arange(len(data)))  # same error message

问题是因为reindex需要唯一的索引值。在这种情况下,您不想保留旧的索引值,只需要新的索引值是唯一的。最简单的方法是:

In [95]: data.reset_index(drop=True)
Out[72]: 
    x
0  33
1  55
2  88
3  22

请注意,如果要保留旧索引值,可以不使用drop=True