如何从CSV文件的同类基础URL中各随机抽取1条URL
同基础域名URL随机抽样实现方案
需求说明
现有包含数千条URL的CSV文件,需要从每类基础域名相同的URL中各随机选取1条,选取顺序无限制,仅需满足随机选取要求。
实现代码
import pandas as pd from urllib.parse import urlparse # 读取本地CSV文件,实际使用时替换为你的文件路径即可 # df = pd.read_csv("your_file_path.csv") # 示例测试数据,实际使用时可删除 data = {'url':['https://alabamasymphony.org/event/shamrocks-strings', 'https://alabamasymphony.org/event/emperor', 'https://mobilesymphony.org/event/fanfare', 'https://mobilesymphony.org/event/the-fireworks-of-jupiter/', 'https://www.hso.org/concerts/liszt-fantasy/', 'https://www.juneausymphony.org/apr2019/']} df = pd.DataFrame(data) # 提取每个URL的基础域名作为分组依据 df["domain"] = df["url"].apply(lambda x: urlparse(x).netloc) # 按域名分组,每组随机抽取1条记录,最终转为列表格式 result = df.groupby("domain", group_keys=False).apply(lambda x: x.sample(1))["url"].tolist() print(result)
输出示例
运行代码后输出格式和需求预期一致,示例输出如下:
['https://alabamasymphony.org/event/emperor', 'https://mobilesymphony.org/event/fanfare', 'https://www.hso.org/concerts/liszt-fantasy/', 'https://www.juneausymphony.org/apr2019/']
注意事项
- 若需要固定随机结果用于复现,可以给
sample方法添加random_state参数,例如修改为x.sample(1, random_state=2024),参数值可自定义 - 若存在格式不规范的无效URL,可以在提取域名步骤增加异常处理逻辑过滤脏数据,避免解析报错
- 该方案针对数千条量级的数据运行效率极高,无需额外性能优化
内容的提问来源于stack exchange,提问作者Aniiya0978
相关产品推荐
相关产品推荐

