2016-07-12 3 views
-1

У меня есть колонка твитов. Я хочу, чтобы получить список всех упоминаний в твите, используя регулярное выражение:pandas str.extractall по полным словам

\@(\w+) 

Я попытался с помощью df.Tweets.str.extractall('\@(\w+)'), но это не удается с совпадающим словом целиком, как он хочет (мое предположение), чтобы отделить каждое слово много столбцов. Я получаю следующую ошибку

AssertionError: 1 columns passed, passed data had 15 columns. 

скажу, что '\@(\w)' работает, как ожидалось, и возвращает результат, но только первую букву. + для всего слова, вероятно, является корнем.

Это набор данных ISIS от Kaggle. Например, первое совпадение относится к
'Aslm Please share our new account after the previous one was [email protected] @seifulmaslul123 @CheerLeadUnited'
с использованием .extract() работает нормально, но только находит первый. с помощью .extractall('\@(\w)') я получаю:

   0 
    match 
8  0  K 
     1  s 
     2  C 

, который имеет смысл. Но извлечение всех полных слов дает ошибку.

+0

Регулярное выражение, которое вы используете, и 'extractall' - это способ сделать. Я предполагаю, что это как-то связано с файловой рамкой. Мы не можем сказать, если вы не разделите его. – piRSquared

+0

рассматриваемый df - это набор данных ISG kaggle. Первая ячейка для сопоставления '' @ AbdirahmanBash2 @KhalidMaghrebi_ @ IbnNabih1 @Polder_Mujahid Aslm, мы завершили перевод, за исключением нескольких новостей ' – DeanLa

+1

Положите это в сообщение. – piRSquared

ответ

1

По-видимому, панды выглядят для разделения групп на столбцы, поэтому решение состоит в том, чтобы обернуть все регулярное выражение также как группу.
df.Tweets.str.extractall('(\@(\w+))')

разница, являющаяся оберточной скобкой внутри строки.

+0

Или, возможно, удалить группировку? '@ \ W + ''? –

+0

'ValueError: шаблон не содержит групп захвата' – DeanLa