python - 在时间戳或字符串列上检查 pandas df 列 dtype 时出错
问题描述
我正在检查 python pandas 数据框中所有列的数据类型。当我检查 int64 或 float64 列时,它工作正常,如下所示:
print("df['Pass'][0].dtype=",df['Pass'][0].dtype)
输出是df['Pass'][0].dtype= int64
但是,当我尝试检查应该是时间戳或字符串的列时,我会跳出我所在的try块并转到except:
print("df['DATETIME'][0]=",df['DATETIME'][0])
print("df['DATETIME'][0].dtype=",df['DATETIME'][0].dtype)
....
except:
print("FILE CORRUPTED...")
这给了我:
df['DATETIME'][0]= 2021-01-25 14:14:08.535000+00:00 FILE CORRUPTED
如果我也检查字符串列的 .dtype,我也会得到同样的错误。想法?
解决方案
这是因为通过 subsrpting [0]
,您访问的是元素类型而不是 Series 类型。
Pandas Timestamp 对象(而不是系列)没有方法/属性,dtype
而 int64 具有此属性。因此你会得到错误:AttributeError: 'Timestamp' object has no attribute 'dtype'
同样,对于字符串类型的元素(而不是系列),它没有dtype
属性。因此,你会得到AttributeError: 'str' object has no attribute 'dtype'
对于整数 int64 元素,它确实具有此dtype
属性,您将得到例如dtype('int64')
您可以使用type()
函数来获取元素类型,例如:
type(df['DATETIME'][0])
会给你: pandas._libs.tslibs.timestamps.Timestamp
这也适用于字符串、整数和浮点数(元素类型)。
推荐阅读
- ms-access - 为什么我的 SELECT 查询出现错误 3078?
- java - Spring挑选最高优先级的bean
- sql - 如何根据条件排除整个客户 ID 数据
- javascript - javascript 中的对象不是从末尾追加其数据。为什么?
- javascript - 不显示数据以单击其他按钮
- php - application/x-www-form-urlencoded 内容类型破解 php 中的 curl 响应
- javascript - 同时从多个选择中获取和存储值
- mysql - 如何强制限制从所有用户的查询返回的行数?
- javascript - Spring Boot 无法加载 js 和 css 文件
- flutter - Listview builder 未显示在列中