You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pandas条件语句中用str.contains()为列元素按需应用函数并解决报错

问题原因

你遇到的报错核心是.str.contains()是Pandas Series的矢量化方法,而apply传入lambda的参数x是URL列中的单个字符串对象,字符串本身没有str属性,因此触发属性错误。

修复方案

方案1:直接修正原有逻辑

将字符串包含判断替换为Python原生的in运算符即可,完整代码如下:

from urllib.parse import urlparse

df['URL'] = df['URL'].apply(
    lambda x: urlparse(x).netloc if 'http' in x else x
)

方案2:更通用的鲁棒写法

可以省略是否包含http的判断,直接利用Python的短路运算逻辑:如果urlparse(x).netloc为空(即原URL没有http前缀),就直接返回原始值,代码更简洁,也能兼容大小写、特殊前缀等边缘情况:

from urllib.parse import urlparse

df['URL'] = df['URL'].apply(lambda x: urlparse(x).netloc or x)

处理结果示例

运行上述代码后,你的样例数据输出如下:

ID                         URL
0   1             www.Facebook.com
1   2                  Twitter.com
2   3                www.Youtube.com
3   4              www.Microsoft.com
4   5    www.Stackovervlow.com

内容的提问来源于stack exchange,提问作者josetribiani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:15:04