isinstance() 未检测 pandas 数据框列的类型

CMH*_*H89 5 python numpy pandas

我试图在循环开始时使用 isinstance() 来检查数据框中每列的类型。

我有很多列,但 isinstance 普遍失败。例如;

test['Total Revenue'].dtypes
Run Code Online (Sandbox Code Playgroud)

回报

dtype('int64')
Run Code Online (Sandbox Code Playgroud)

但使用 isinstance 返回

isinstance(test['Total Revenue'].dtypes, (int, np.integer))
False
Run Code Online (Sandbox Code Playgroud)

isinstance 仅将我的列识别为对象

isinstance(test['Total Revenue'].dtypes, object)
True
Run Code Online (Sandbox Code Playgroud)

我的直觉告诉我这与 isinstance 访问该值的方式有关,但我被困住了

Qua*_*ang 7

pd.Series.dtypes返回该类的一个实例np.dtype,该类也是 的子类object。所以isinstance(series.dtypes, int)will 当然会失败,但isinstance(pd.Series([1,2,3]).dtypes,np.dtype)is True

我想你想要

test['Total Revenue'].dtypes == 'int64'
Run Code Online (Sandbox Code Playgroud)

或者

pd.Series([1,2,3,]).dtypes == np.int
Run Code Online (Sandbox Code Playgroud)

  • 只是为了补充一下答案,请注意(OP),这里重要的不是 python 类型,而是 pandas/numpy 认为的“数据类型”。这就是为什么使用“isinstance”进行测试没有意义。您必须检查“dtype”属性的**值**,这就是这个答案教您如何做的。 (2认同)