我创建了一个函数,该函数从我的数据集中的任何列获取整个字符串,并提取邮箱地址(如果没有邮箱),它应该用NaN填充空格:

def extract_email_ID(string):
    email = re.findall(r'<(.+?)>', string)
    if not email:
        email = list(filter(lambda y: '@' in y, string.split()))
    return email[0] if email else np.nan

我使用正则表达式来应用数据集的"from"列中的函数

dfs['from'] = dfs['from'].apply(lambda x: extract_email_ID(x))

但我收到以下错误TypeError: expected string or bytes-like object

推荐答案

在我看来,您的示例列dfs[from']中有一些非字符串值. 在函数开始时执行类型判断.如果检测到除字符串之外的任何内容,我假设您还希望返回np.nan. 所以也许你可以插入这句话:

if not isinstance(string, str):
    return np.nan

Python相关问答推荐

按日期和组增量计算总价值

合并同名列,但一列为空,另一列包含值

用Python获取HTML Span类中的数据

如何将带有逗号分隔的数字的字符串解析为int Array?

Tkinter滑动条标签.我不确定如何删除滑动块标签或更改其文本

计算所有前面行(当前行)中列的值

Python Hashicorp Vault库hvac创建新的秘密版本,但从先前版本中删除了密钥

如何在msgraph.GraphServiceClient上进行身份验证?

Pandas 在最近的日期合并,考虑到破产

Pystata:从Python并行运行stata实例

当使用keras.utils.Image_dataset_from_directory仅加载测试数据集时,结果不同

如何在Windows上用Python提取名称中带有逗号的文件?

Pandas - groupby字符串字段并按时间范围 Select

DataFrames与NaN的条件乘法

实现神经网络代码时的TypeError

如何合并两个列表,并获得每个索引值最高的列表名称?

Django admin Csrf令牌未设置

通过ManyToMany字段与Through在Django Admin中过滤

如何在Python中使用另一个数据框更改列值(列表)

为什么Python内存中的列表大小与文档不匹配?