先看一个非常简单的例子:
有什麼方法可以将列转换为适当的类型例如,上面的例子如何将列2和3转为浮点数?有没有办法将数据转换为DataFrame格式时指定类型或者是创建DataFrame,然后通过某种方法更改每列的类型理想情况下,希望以动态的方式做到这一点因为可以有数百个列,明确指定哪些列是哪种类型太麻烦可以假定每列都包含相同类型的值。
可以用的方法简单列举如下:
如果要创建一个DataFrame可以直接通过dtype参数指定类型:
使用to_numeric
转为数值。默认情况下它不能处理字母型的字符串'pandas':
可以将无效值强制转换为NaN
,如下所示:
如果遇到无效值第三个选项就是忽略该操作:
如果想偠将这个操作应用到多个列,依次处理每一列是非常繁琐的所以可以使用DataFrame.apply
处理每一列。
但是可能不知道哪些列可以可靠地转换为数字類型。在这种情况下设置参数:
然后该函数将被应用于整个DataFrame,可以转换为数字类型的列将被转换而不能(例如,它们包含非数字字符串戓日期)的列将被单独保留
软转换——类型自动推断
版本0.21.0引入了infer_objects()
方法,用于将具有对象数据类型的DataFrame的列转换为更具体的类型
例如,用两列对象类型创建一个DataFrame其中一个保存整数,另一个保存整数的字符串:
由于'b'的值是字符串而不是整数,因此'b'一直保留
如果试图强制将兩列转换为整数类型,可以使用df.astype(int)