2016-10-04 7 views
1

Я использую функцию парного расстояния sklearn, которая спасла мою жизнь при вычислении огромной матрицы, но проблема, с которой я сталкиваюсь, заключается в том, что я теряю свои индексы.Как поддерживать или восстанавливать индексацию Dataframe после запуска функции Pairwise Distance?

В частности, изначально у меня огромный размер данных 17000 x 300, который я разбиваю на 4 разных кадра данных на основе некоторого состояния класса. 4 отдельных блока данных сохраняют исходные индексы, но после запуска функции парного расстояния на одном из этих кадров данных он возвращает мне 2d-массив с правильными значениями, но индексы сбрасываются с 0 до.

Как сохранить или восстановить исходные индексы?

distance1 = pair.pairwise_distances(df1, metric='euclidean')

ответ

3

Вы можете создать DataFrame с соответствующими индексами, используя DataFrame constructor принимая index параметр:

pd.DataFrame(distance1, index=df1.index) 

Кроме того, если вы хотите, чтобы сцепить его горизонтально к существующей DataFrame, вы можете использовать

pd.concat((df1, pd.DataFrame(distance1, index=df1.index)), axis=1) 
+0

Спасибо, что сработало отлично! –

+0

Добро пожаловать. Всего наилучшего. –

+0

@AmiTavory можно зарезервировать индексы, если вы повышаете дискретизацию данных. То есть, исходные данные будут иметь исходные индексы, тогда как данные с улучшенной дискретизацией имеют новые индексы – Victor