从 Pandas Dataframe 中的列中删除 URL

新手上路,请多包涵

我有一个小数据框,正在尝试从“链接”列中的字符串末尾删除 url。我尝试了以下代码,它适用于 url 独立的列。问题是一旦 url 之前有句子,代码就不会删除这些 url

这是数据: https ://docs.google.com/spreadsheets/d/10LV8BHgofXKTwG-MqRraj0YWez-1vcwzzTJpRhdWgew/edit?usp=sharing(电子表格链接)

 import pandas as pd

df = pd.read_csv('TestData.csv')

df['Links'] = df['Links'].replace(to_replace=r'^https?:\/\/.*[\r\n]*',value='',regex=True)

df.head()

谢谢!

原文由 Joe Smith 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

尝试这个:

 import re
df['cleanLinks'] = df['Links'].apply(lambda x: re.split('https:\/\/.*', str(x))[0])

输出:

 df['cleanLinks']

    cleanLinks
0   random words to see if it works now
1   more stuff that doesn't mean anything
2   one last try please work

原文由 Vishnu Kunchur 发布,翻译遵循 CC BY-SA 4.0 许可协议

尝试更清洁的正则表达式:

 df['example'] = df['example'].replace(r'http\S+', '', regex=True).replace(r'www\S+', '', regex=True)

在熊猫 .replace() 或其他任何地方实施正则表达式之前,您应该使用 re.sub() 在单个基本字符串示例上测试模式。当遇到大问题时,将其分解为较小的问题。

此外,我们可以使用 str.replace 方法:

 df['status_message'] = df['status_message'].str.replace('http\S+|www.\S+', '', case=False)

原文由 Philip DiSarro 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题