【发布时间】:2016-05-02 09:13:32
【问题描述】:
我正在将 JSON 文件读入数据帧。数据框可能有一些字符串(对象)类型的列、一些数字(int64 和/或 float64)和一些日期时间类型的列。读入数据时,数据类型往往不正确(即日期时间、整数和浮点数通常会存储为“对象”类型)。我想报告这种可能性。 (即一列在数据框中作为“对象”(字符串),但它实际上是一个“日期时间”)。
我遇到的问题是,当我使用 pd.to_numeric 和 pd.to_datetime 时,它们都会评估并尝试转换列,很多时候它最终取决于我最后调用的两个中的哪一个......(我打算使用 convert_objects() 哪个可行,但已折旧,因此需要更好的选择)。
我用来评估数据框列的代码是(我意识到下面的很多内容都是多余的,但为了可读性我已经这样写了):
try:
inferred_type = pd.to_datetime(df[Field_Name]).dtype
if inferred_type == "datetime64[ns]":
inferred_type = "DateTime"
except:
pass
try:
inferred_type = pd.to_numeric(df[Field_Name]).dtype
if inferred_type == int:
inferred_type = "Integer"
if inferred_type == float:
inferred_type = "Float"
except:
pass
【问题讨论】:
-
很遗憾它已被弃用。这是一种光荣的方法。
-
convert_objects 已被 infer_objects 弃用,不是
-
@itzjustricky infer_objects 甚至不会将 ['1', '2', '3'] 识别为数字。 pd.DataFrame(['1', '2', '3']).infer_objects().dtypes 返回“对象”