python - TypeError 预期的字符串或类似字节的对象 - Pycharm
问题描述
我找不到为什么会发生此错误。
TypeError: expected string or bytes-like object
我正在尝试使用以下代码获得“赫芬顿邮报”作为赞助商出现的时间:
polls = list(set(covid_approval_polls["sponsor"]))
Huff_Post_regexp = r"\bHuffington Post\b"
Huff_Post = [
approval
for approval in polls
if re.search(Huff_Post_regexp, approval) is not None
]
数据框如下所示:
start_date end_date pollster sponsor sample_size population \
0 2020-02-02 2020-02-04 YouGov Economist 1500.0 a
1 2020-02-02 2020-02-04 YouGov Economist 376.0 a
2 2020-02-02 2020-02-04 YouGov Economist 523.0 a
3 2020-02-02 2020-02-04 YouGov Economist 599.0 a
4 2020-02-07 2020-02-09 Morning Consult NaN 2200.0 a
解决方案
的参数re.search
必须是“字符串”或“字节”。正如我在您的“赞助商”列中看到的那样,有一个NaNfloat
在该迭代中被解释为approval
既不是字符串也不是字节。这就是你得到那个 TypeError 的原因。
编写此代码以查看其实际效果:
for item in list(set(covid_approval_polls["sponsor"])):
print(item, type(item))
要解决这个问题,您可以忽略re.search
with 单个条件pd.isna()
,或者将 DataFrame 中的 NaN 替换为空字符串""
。
推荐阅读
- node.js - 如何使用 Firebase 云函数加密字符串
- laravel - Laravel Query 内置还是 Eloquent ORM?
- python - 在 Sagemaker 上通过 conda 更新 pandas 极其缓慢
- bash - 将未知数量的参数从命令行传递到 Makefile
- reactjs - 使用 prevState 更改对象数组中的值不会返回预期值
- excel - 如何在 Excel 中提取遵循特定格式的文本字符串
- azure - Azure 站点到站点 vpn
- database - CloudFirestore 如何查询大型数据集?
- python - 在实现二叉树时是否必须有两个类(节点,树)?
- android - Android R – 使用范围存储 (MediaStore.Downloads) 在下载文件夹中创建一个文本文件