У меня есть фрейм данных в виде:
Room Location
0 jc room g
1 merten 3005
2 merten 2500
3 merten 3005
4 merten 3005
5 merten 3005
6 jc bistro
В настоящее время я пытаюсь проанализировать эти конкретные столбцы, чтобы извлечь все значения в указанном списке:
room_list = ['jc','sub', 'hub', 'merten', 'rsch', 'corner pocket', 'mix', 'fenwick']
Таким образом (и довольно неэффективно) я использую:
room_list = (MASTER_TABLE['Room Location'].astype(str).str.lower()).tolist()
room_string = ''.join(room_list)
room_freq = re.findall(r'|'.join(room_list), room_string)
Чтобы повторить, после некоторой предварительной обработки, я превращаю столбец в список, затем строку, затем выполняю это:
freqs = {}
for item in room_freq:
freqs[item] = freqs.get(item, 0) + 1
num_sort_freqs = dict(sorted(freqs.items(), key=lambda x: x[1], reverse = True))
print('Sorted name occurences: ','\n')
print('===================================================================\n')
for k, v in num_sort_freqs.items():
print(k, v)
Однако это работает потрясающе, когда я возвращаю «отсортированный» словарь, я получаю следующее:
merten 1204 39
jc cinema 35
merten 2500 31
jc gold rm 31
the hub corner pocket 30
Удивительно, что он делает именно так, как ему сказали, мой вопрос выглядит следующим образом:
Как мне разобратьчерез столбец (или список -> строку, я должен сказать) и частично сопоставьте элемент столбца с элементом указанного списка, ДАЖЕ, если к элементу прикреплен избыточный «шум», или, например:
jc room g = jc
merten 3005 = merten
В идеале, у возврата должен быть только 5 ключей для возврата, room_list
и их последующих частот.Я также попытался удалить все числа, но, поскольку некоторые элементы имеют избыточный шум строки, проблема не исчезла.
Я просмотрел предыдущие связанные вопросы и не нашел ничего конкретного для моей проблемы, но если вы найдете(СООТВЕТСТВУЮЩИЙ) обман, пожалуйста, дайте мне знать, чтобы я не тратил ваше время.Спасибо!