Редактировать расстояние между всеми столбцами в панде - PullRequest
0 голосов
/ 04 мая 2018

Я заинтересован в расчете расстояний редактирования для всех столбцов данной панды DataFrame. Допустим, у нас есть 3 * 5 DataFrame - я хочу вывести что-то вроде этого с показателями расстояния - (столбец * матрица столбца)

  col1  col2 col3 col4 col5

col1

col2

col3

COL4

col5

Я хочу, чтобы каждый элемент столбца совпадал с каждым элементом других столбцов. Следовательно, для каждой ячейки col1 * col2 = сумма всех оценок вложенной петли col1 и col2.

Я был бы очень признателен за любую помощь в этом отношении. Заранее спасибо.


INSPECTION_ID STRUCTURE_ID RELOCATE_FID HECO_ID HECO_ID_TAG_NOT_FOUND \ 0 100 95308 NaN 18/29 0,0
1 101 95346 NaN Nov-29 0.0
2 102 50008606 NaN 25/29 0,0
3 103 95310 NaN Dec-29 0.0
4 104 95286 NaN 17/29 0,0

OSMOSE_POLE_ID ALTERNATE_ID STREET_NBR STREET_DIRECTIONAL STREET_NAME \ 0 NaN NaN 1888 NaN KAIKUNANE
1 NaN NaN 1731 NaN MAKUAHINE
2 NaN NaN 1862 NaN MAKUAHINE
3 NaN NaN 1825 NaN KAIKUNANE
4 NaN NaN 1816 NaN KAIKUNANE

Кроме того, я получил набор данных (191795, 58). Моя цель - найти расстояние редактирования между каждым столбцом набора данных, чтобы понять шаблоны между ними, если они есть.

Например, я хочу, чтобы INSPECTION_ID 100 проверялся со всеми значениями столбца STRUCTURE_ID и так далее. Я понимаю необходимость оптимизированного итератора в этом случае. Пожалуйста, помогите мне дать некоторые направления, чтобы решить эту проблему. Заранее спасибо.

1 Ответ

0 голосов
/ 04 мая 2018

Очень наивное решение (если у вас уже есть функция редактирования расстояния), но может работать только для небольших наборов данных

df = # your dataset
def edit_distance(s1, s2):
    # some code
    # return edit distance of s1, s2


df_distances = []
for i, row in df.iterrows():
    row_distances = []
    for item in row:
        for item2 in row:
              row_distances.append(edit_distance(item, item2))
    df_distances.append(some_array)

Я не тестировал это решение, поэтому могут быть ошибки, но общий принцип должен работать. Если у вас нет функции редактирования расстояния, вы можете использовать эту реализацию https://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#Python или один из многих других свободно доступных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...