从pandas数据框中的字符串中删除特定URL

时间:2019-06-11 19:36:35

标签: python pandas

我有一个数据框:

Name  url

 A    'https://foo.com, https://www.bar.org, https://goo.com'
 B    'https://foo.com, https://www.bar.org, https://www.goo.com'
 C    'https://foo.com, https://www.bar.org, https://goo.com'

,然后是关键字列表:

keyword_list = ['foo','bar']

我正在尝试删除包含关键字的url,同时保留不包含这些关键字的url,到目前为止,这是唯一对我有用的方法,但是它只是删除了该单词的实例:

df['url'] = df['url'].str.replace('|'.join(keywordlist), ' ')

我尝试将字符串中的元素转换为列表,但是将其与部分较大的数据框组合回去时却遇到索引错误?

所需的输出:

Name  url

 A    'https://goo.com'
 B    'https://www.goo.com'
 C    'https://goo.com'

1 个答案:

答案 0 :(得分:0)

我很确定您可以使用一些正则表达式来做到这一点。但您也可以这样做:

new_df = df.set_index('Name').url.str.split(',\s+', expand=True).stack()

(new_df[~new_df.str.contains('|'.join(keyword_list))]
      .reset_index(level=1, drop=True)
      .to_frame(name='url')
      .reset_index()
)

输出:

  Name                  url
0    A      https://goo.com
1    B  https://www.goo.com
2    C      https://goo.com