Pandas如何根据另一列的URL列表删除tweet列中的对应URL子串
问题原因
你最初的代码是将整行的url列表直接转为字符串(格式类似"['url1', 'url12']"),无法和tweet文本里单独存在的url匹配,所以没有达到预期的替换效果。
正确实现方案
方案1:自定义函数实现(适配性更高)
先定义逐行处理的函数,遍历当前行的所有url逐个替换,最后清理多余空格:
def clean_tweet(row): cleaned = row['tweet'] # 逐个替换当前行所有url for url in row['url']: cleaned = cleaned.replace(url, '') # 清理替换后产生的连续多余空格 return ' '.join(cleaned.split()) ds['urls_free_tweet'] = ds.apply(clean_tweet, axis=1)
方案2:lambda简洁写法
如果场景中url都是以空格和其他内容分隔的,可以用更简短的写法:
ds['urls_free_tweet'] = ds.apply( lambda row: ' '.join([term for term in row['tweet'].split() if term not in row['url']]), axis=1 )
注意:如果实际场景中url可能和其他文本字符连在一起(无空格分隔),优先使用方案1的逐个replace写法。
运行以上代码后生成的urls_free_tweet列就会完全符合你给出的预期输出结果。
内容的提问来源于stack exchange,提问作者coding
相关产品推荐
相关产品推荐

