У меня есть фрейм данных, и я хочу сравнить 2 переменные (фрейм данных составляет около 20 тыс. Строк; в конечном итоге он достигнет 150 тыс. +).
Я бы хотел сравнить строки, но слова в другом порядке.Если наборы в остальном точно эквивалентны, т. Е. Abc = cab, но abc! = Cabe, тогда я хочу показать совпадение, в противном случае несоответствие.
В настоящее время код настроен следующим образом для всех переменных:
ex['bt M'] = np.where(ex['bt_x'] == ex['bt_y'], 1, 0)
Большинство переменных являются числами, но есть пара строк, в которых я хотел бы игнорировать порядок или сортировку.Я пробовал это:
ex['bt_x_2'] = ''.join(sorted(ex['bt_x']))
Новая переменная 'bt_x_2', кажется, содержит отсортированный результат всех строк 'bt_x' во фрейме данных в каждой строке.Я хочу отсортировать результат в каждой строке независимо от всех остальных.Другими словами: примените
ex['bt_x_2'] = ''.join(sorted(ex['bt_x']))
или любой другой метод к каждой строке.Я сделаю это для обеих строк сравнения, затем проверим на эквивалентность.Если есть лучший способ, то отлично.Я хотел бы услышать об этом.Я искал хороший способ сделать это здесь и там в нескольких случаях.Я уже писал несколько правил регулярных выражений, но лучше этого не делать.
Пример кадра данных:
File Name: "file 1.pdf", "file 2.pdf"
bt_x: "Series A + Series B; Series C + D; No Common Shares", "series A-1 + B-1"
bt_y: "Series C + D; No Common Shares; Series A + Series B", series B-1 + A-1
dividends_x: .08, .667
dividends_y: .11, .06667
желаемый вывод (пробелы и другие символы в конечном итоге являютсяневажно совпадать):
bt_x: "Series A + Series B; Series C + D; No Common Shares", "series A-1 + B-1"
bt_y: "Series A + Series B, Series C + D; No Common Shares; , series A-1 + B-1
Я хорошо разбираюсь "; или + или - или" "
В принципе, есть ли точно совпадающий набор слов и букв в bt_x и bt_yэто вопрос, на который я хочу ответить в третьем столбце bt_M (1,0)