我想测试pandas.Series()是否仅包含整数。以下所有内容均无效。我更喜欢使用isinstance()
的解决方案。
import pandas as pd
import numpy
print(isinstance(pd.Series([1, 2]).dtype, numpy.int64))
print(isinstance(pd.Series([1, 2]).dtype.type, numpy.int64))
print(pd.Series([1, 2]).dtype)
print(isinstance(pd.Series([1, 2]).dtype.type, int64))
# False
# False
# int64
# NameError: name 'int64' is not defined
我认为这个问题必须已经解决,尽管我在搜索时找不到。
答案 0 :(得分:2)
如果您知道该系列只有一种数据类型,则可以
print(s.dtype == 'int64')
当它包含多种数据类型时,系列的数据类型将为“对象”,在这种情况下,您可能要检查每个元素是否都是int的:
s = pd.Series([1,'5'])
s.apply(isinstance,args = [int])
>> 0 True
1 False
dtype: bool
s.apply(isinstance,args = [int]).all()
>> False
答案 1 :(得分:0)
好吧,series.dtype.type实际上返回type
,而不是实例。因此,上面的示例不起作用。为了正常工作,我们需要提供一个实例和一个类型。像这样切换参数时,可以使用isinstance
:
series = pd.Series([1, 2])
isinstance(np.int64(3), series.dtype.type)
我们需要提供要检查的类型的示例。这有点反常。我将使用方法Series.istype(int)
返回True或False。不过,非常具体的isinstance(3, series.dtype.type)
会返回False
。
另一种选择是使用kind
,尽管我不确定这是否是其意图:
series.dtype.kind == 'i' # for integer