Как я могу использовать Python, чтобы разбить ряд строк в базе данных, а затем повернуть результат, показывая слово и количество раз, когда оно появляется - PullRequest
0 голосов
/ 06 февраля 2020

Если у меня есть база данных с сотнями тысяч отдельных строковых комбинаций с простым разделителем, например,

как я могу разделить строку каждого измерения и затем получить счетчик по слову в выводе столбца?

Я новичок в python, поэтому я понимаю простое разбиение и основы настройки DF, но я не уверен, как все это собрать.

Например, как работает следующее, но я не уверен, что смогу пройти через все те строки, которые у меня есть, oop? Кажется, что это будет сделано по-другому, и как бы я тогда посчитал результат всего этого.

txt = "word1 | word 2 | word 3 | etc "

x = txt.split()

print(x)

Будет полезна любая помощь, включая ресурс, где можно узнать больше об основах того, что я делаю.

Ответы [ 3 ]

0 голосов
/ 06 февраля 2020

В python у нас есть структура данных, названная как словарь. Здесь у нас есть пара ключ-значение, где значение хранит информацию, связанную с ключом. Подробнее об этом читайте здесь - https://docs.python.org/3/tutorial/datastructures.html

Существует быстрый способ подсчета количества строк:

from collections import Counter
words = txt.split('|)
counts = Counter(words)

Теперь словарь counts хранит Строка и сколько раз она появляется. Чтобы получить частоту строки, скажем 'word 1', вам нужно написать counts['word 1']. Пожалуйста, не стесняйтесь просить разъяснений.

0 голосов
/ 06 февраля 2020

Есть много способов получить счет, например:

 x = len(txt.split("|"))

, но разделение не требуется, вы можете просто посчитать разделители + первый элемент:

txt.count("|") + 1 
0 голосов
/ 06 февраля 2020

Хорошим подходом будет использование Pandas.

, загрузка базы данных в pandas DataFrame и использование строковой команды.

Вот пример:

df = pd.DataFrame({"words":["word1 | word 2 | word 3 | etc", "word 4 | word 5"]})

                           words
0  word1 | word 2 | word 3 | etc
1                Word 4 | Word 5

и разделить значения:

result = df.words.str.split("|", expand=True)
result
         0         1         2     3
0   word1    word 2    word 3    etc
1  word 4     word 5      None  None
...