Python 断言一个系列只包含字符串

Python 断言一个系列只包含字符串,python,pandas,Python,Pandas,我的问题似乎很明显,我很惊讶以前没有人回答。如果是这样的话,我很抱歉 目前我唯一能做的断言是断言一个序列数据类型是一个对象('O')。但这并不能证明它只包含字符串,因为它是由float和int组成的混合数据类型系列,例如,它也是类型“O”。 当然也有蛮力方法,通过断言每个元素的类型为string并使用apply函数,但这可能很长,而且对于简单的检查来说似乎很复杂 是否有任何方法可以断言它实际上只包含字符串,这可能来自于该系列的长应用程序?这不是一种简单的方法,但您可以将all与生成器表达式一起使

我的问题似乎很明显,我很惊讶以前没有人回答。如果是这样的话,我很抱歉

目前我唯一能做的断言是断言一个序列数据类型是一个对象('O')。但这并不能证明它只包含字符串,因为它是由float和int组成的混合数据类型系列,例如,它也是类型“O”。 当然也有蛮力方法,通过断言每个元素的类型为string并使用apply函数,但这可能很长,而且对于简单的检查来说似乎很复杂


是否有任何方法可以断言它实际上只包含字符串,这可能来自于该系列的长应用程序?

这不是一种简单的方法,但您可以将
all
与生成器表达式一起使用:

s = pd.Series(list('ABCD'))
>>> all(isinstance(x, str) for x in s)
True

没有简单的方法,但您可以将
all
与生成器表达式一起使用:

s = pd.Series(list('ABCD'))
>>> all(isinstance(x, str) for x in s)
True

我也会选择
all
+
isinstance

作为一种更直观的替代方法,您可以应用内置的
类型
功能

df = pd.DataFrame({'col': [1, 2, '3', '4', '5']})

  col
0   1
1   2
2   3
3   4
4   5

可以执行
(df['col'].apply(type)==str.all()
来检查所有
真值


最后,使用
type
可能会对字符串的子类产生错误的结果

e、 g:

请注意区别:

>>> df['col'].apply(type) == str
0    False
1    False
2     True
3     True
4    False
Name: col, dtype: bool
但是


因此,
isinstance
通常是首选的检查器。

我也会选择
all
+
isinstance

作为一种更直观的替代方法,您可以应用内置的
类型
功能

df = pd.DataFrame({'col': [1, 2, '3', '4', '5']})

  col
0   1
1   2
2   3
3   4
4   5

可以执行
(df['col'].apply(type)==str.all()
来检查所有
真值


最后,使用
type
可能会对字符串的子类产生错误的结果

e、 g:

请注意区别:

>>> df['col'].apply(type) == str
0    False
1    False
2     True
3     True
4    False
Name: col, dtype: bool
但是


因此,
isinstance
通常是首选的检查工具。

谢谢,回答非常简洁,非常直截了当谢谢,回答非常简洁,非常直截了当