重新索引具有重复索引值的数据框

Reindex a dataframe with duplicate index values

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

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

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

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

给出了错误 "ValueError: cannot reindex from a duplicate axis." google 搜索让我认为这个错误是因为最多有 4 行共享相同的索引值。知道如何在不删除任何行的情况下重新编制索引吗?我也不是特别关心行的顺序,因为我总是可以对它进行排序。

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

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

据我了解,我只是在我的数据框中添加了一个名为 'index' 的新列,然后将该列设置为我的索引。 至于我的 csv,它们是 this page of Lending Club loan stats 上 "download loan data" 下的四个 csv。

使用此示例数据很容易重现您的错误:

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