如何使用Pandas拆分URL列并提取信息生成多列?
解决Pandas DataFrame中URL列的拆分问题
我来帮你搞定这个URL拆分的需求!你的目标是把不同层级的URL拆分成main、prod、page、more_info四列,其实用pandas.Series.str.split就能实现,只是需要调整参数并做一些后续处理,下面是具体的解决方案:
完整代码实现
import pandas as pd import numpy as np # 构造你的示例DataFrame df = pd.DataFrame({ 'url': [ 'www.abc.com/', 'www.abc.com/ttt/page1', 'www.abc.com/vvv/page4/info', 'www.abc.com/zzz/page4' ] }) # 核心处理逻辑:清理URL + 拆分 + 重命名 + 空值替换 result_df = ( df['url'] # 先去掉URL末尾的斜杠,避免拆分出空字符串 .str.rstrip('/') # 按斜杠分割并展开成多列DataFrame .str.split('/', expand=True) # 给拆分后的列指定目标名称 .rename(columns={0: 'main', 1: 'prod', 2: 'page', 3: 'more_info'}) # 将空字符串替换为NaN,和你需要的输出格式一致 .replace('', np.nan) ) print(result_df)
代码解释
- 清理URL:用
str.rstrip('/')去掉URL末尾的斜杠,比如www.abc.com/会变成www.abc.com,避免拆分后出现多余的空列。 - 拆分URL:
str.split('/', expand=True)会把每个URL按斜杠分割,并自动展开成多列DataFrame,每个层级对应一列。 - 重命名列:直接给拆分后的列映射到你需要的
main、prod、page、more_info名称。 - 空值处理:用
replace('', np.nan)把拆分后产生的空字符串转换成NaN,和示例输出的格式匹配。
运行结果
执行代码后会得到完全符合你需求的DataFrame:
main prod page more_info 0 www.abc.com NaN NaN NaN 1 www.abc.com ttt page1 NaN 2 www.abc.com vvv page4 info 3 www.abc.com zzz page4 NaN
内容的提问来源于stack exchange,提问作者Thabra
相关产品推荐
相关产品推荐

