首页 > 解决方案 > 检查 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但是,如您所见,如果我一开始不小心有一个值,这将不起作用。

有没有人知道如何有效地做到这一点(最好不必检查系列的每个元素)?

标签: pythonpandas

解决方案


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


推荐阅读