Как удалить ссылки http URL из столбца фрейма данных в NLP - PullRequest
2 голосов
/ 29 марта 2019

У меня есть фрейм данных, в котором есть столбец с текстовыми данными. Я хочу удалить все ссылки URL из текстовых данных. Например, столбец df выглядит так:

user_id      post_title
    1        #hello....world!!https://www.facebook.com
    2        https://www.google.com
    3        https://www.facebook.com

Я пытался сделать это, но я получаю сообщение об ошибке 'str' объект не может быть интерпретирован как целое число. Как это исправить?

def replaceURL(post_title):
   post_title = post_title.map(lambda x: re.sub('((www\.[^\s]+)|(https?://[^\s]+))','',str(x)))
    post_title = post_title.str.strip()
    post_title = post_title.map(lambda x: re.sub(r'#([^\s]+)', r'\1','',str(x)))
    return post_title
df['post_title'] = replaceURL(df['post_title'])
df['post_title_length'] = df['post_title'].str.len()
df

Вывод должен содержать пустые значения вместо ссылок URL:

user_id      post_title
    1        #hello....world!!
    2        
    3        

1 Ответ

0 голосов
/ 29 марта 2019

Используйте панд str.extract ,

df1['post_title'] = df1['post_title'].str.extract('(.*)http?')

    user_id post_title
0   1       #hello....world!!
1   2   
2   3   

Примечание: если у вас может быть текст после URL, я бы выбрал две группы захвата и объединил их. например:

    user_id post_title
0   1       #hello....world!!https://www.facebook.com
1   2       https://www.google.com
2   3       https://www.facebook.com
3   4       https://facebook.com Hello world


df1['post_title'] = df1['post_title'].str.extract('(.*)http?.*.com?(.*)?').sum(1)

Вы получаете

    user_id post_title
0   1       #hello....world!!
1   2   
2   3   
3   4       Hello world

Редактировать: вот новый пример df со ссылками http и https,

    user_id post_title
0   1   #hello....world!!https://www.facebook.com
1   2   https://www.google.com
2   3   https://www.facebook.com
3   4   https://facebook.com Hello world
4   5   #hello....world!!http://www.facebook.com


df1['post_title'].str.replace('http.*.com', '',regex = True)

Выход

0    #hello....world!!
1                     
2                     
3          Hello world
4    #hello....world!!
...