Распакуйте и распечатайте кортежи в столбце данных pandas - PullRequest
0 голосов
/ 30 августа 2018

У меня есть датафрейм для панд, df :

Search term                                 Match type
second hand proace toyota crew cab sale     Broad match
bmw m5 buy                                  Exact match

Я бы хотел применить ngrams из пакета nltk к столбцу Критерий поиска . Функция ngrams вернет кортеж.

Я бы хотел, чтобы в качестве конечного результата использовались только фразы, например:

Phrases
second hand
hand proace
proace toyota
toyota None
bmw m5
m5 buy
buy None

Вот что я понял до сих пор:

df['Phrases'] = df['Search term'].apply(lambda x: list(ngrams([x for x in x.split()], 2, pad_right=True)))

Это вывод из кода выше:

Search term                   Match type      Phrases
second hand proace toyota     Broad match     [('second', 'hand'), ('hand', 'proace'), ('proace', 'toyota'), ('toyota', None)]
bmw m5 buy                    Broad match     [('bmw', 'm5'), ('m5', 'buy'), ('buy', None)]

Как распаковать все кортежи в списке и распечатать их без запятой и скобок?

1 Ответ

0 голосов
/ 31 августа 2018

На основании @Chris A ответ:

['{} {}'.format(i, j) for i, j in np.concatenate(df.Phrases)]

Результат будет в списке, поэтому вы можете преобразовать его в кадр данных, используя pd.DataFrame().

Если это триграмма, просто измените ее на:

['{} {} {}'.format(i, j, k) for i, j, k in np.concatenate(df.Phrases)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...