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