python - 检查 Pandas 系列是否为字符串类型
问题描述
我将 parquet 文件中的一些数据导入 DataFrame 并希望检查数据类型。我期望的数据类型之一是字符串。为此,我有以下内容:
import pandas as pd
col = pd.Series([None, 'b', 'c', None, 'e'])
assert((col.dtype == object) and (isinstance(col[0], str)))
None
但是,如您所见,如果我一开始不小心有一个值,这将不起作用。
有没有人知道如何有效地做到这一点(最好不必检查系列的每个元素)?
解决方案
从Pandas 1.0.0开始,有一个StringDtype
,您可以使用它来检查是否仅pd.Series
包含其中一个或字符串值:NaN
try:
col.astype('string')
except ValueError as e:
raise e
如果您尝试使用包含以下内容的列int
:
col = pd.Series([None, 2, 'c', None, 'e'])
try:
col.astype('string')
except ValueError as e:
raise e
你会得到一个ValueError
:
ValueError: StringArray 需要一个字符串序列或 pandas.NA
推荐阅读
- php - 在通过 Google 课堂 API 认证为学生的情况下,如何从课程中获取已发布课程作业的列表?
- windows - 如何在 Windows 上执行 GoApp 二进制文件 - 特别是 oauth2l
- .htaccess - htaccess - 将语言参数添加到 url
- python - 如何在 Django 模板中打印“更改字段”的值
- php - 将 Wordpress 中的 JSON 链接读入表格
- javascript - 在数组内映射数组
- c++ - 从别名模板中提取模板参数的值
- c++ - 我正在尝试从文本文件中读取并将它们分类为不同的结构成员,但我不知道哪里出错了
- javascript - Slonik 通过 sql 标签动态插入查询
- python - python sqlite - 条件为空