Переиндексация кадра данных с дублирующимися значениями индекса
Поэтому я импортировал и объединил 4 CSV в один фрейм данных, называемый данными. Тем не менее, при проверке индекса dataframe с помощью:
index_series = pd.Series(data.index.values)
index_series.value_counts()
Я вижу, что несколько записей индекса имеют 4 счета. Я хочу полностью переиндексировать фрейм данных, чтобы каждая строка теперь имела уникальное значение индекса. Я старался:
data.reindex(np.arange(len(data)))
который дал ошибку "ValueError: не может переиндексировать от дублированной оси." Поиск в Google заставляет меня думать, что эта ошибка связана с тем, что существует до 4 строк с одинаковым значением индекса. Любая идея, как я могу сделать это переиндексирование, не удаляя строки? Меня не особо заботит порядок строк, так как я всегда могу его отсортировать.
ОБНОВЛЕНИЕ: Итак, в конце концов я нашел способ переиндексации, как я хотел.
data['index'] = np.arange(len(data))
data = data.set_index('index')
Насколько я понимаю, я просто добавил новый столбец под названием "индекс" в свой фрейм данных, а затем установил этот столбец в качестве моего индекса. Что касается моих csv, то они были четырьмя csv в разделе "загрузить данные о займах" на этой странице статистики займов Lending Club.
1 ответ
Это довольно легко повторить вашу ошибку с этими примерами данных:
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
если вы хотите сохранить старые значения индекса.