pandas.DataFrame.convert_dtypes#
- DataFrame.convert_dtypes(infer_objects=True, convert_string=True, convert_integer=True, convert_boolean=True, convert_floating=True)[源代码]#
使用支持的数据类型将列转换为最佳数据类型
pd.NA
。1.0.0 新版功能.
- 参数
- infer_objects布尔值,默认为True
是否应将对象数据类型转换为可能的最佳类型。
- convert_string布尔值,默认为True
对象数据类型是否应转换为
StringDtype()
。- convert_integer布尔值,默认为True
是否可以转换为整数扩展类型(如果可能)。
- convert_boolean布尔默认为True
对象数据类型是否应转换为
BooleanDtypes()
。- convert_floating布尔默认为True
是否可以转换为浮动扩展类型(如果可能)。如果 convert_integer 也为True,则如果可以将浮点数忠实地强制转换为整数,则优先考虑整数数据类型。
1.2.0 新版功能.
- 退货
- 系列或DataFrame
具有新数据类型的输入对象的副本。
参见
infer_objects
推断对象的数据类型。
to_datetime
将参数转换为日期时间。
to_timedelta
将参数转换为时间增量。
to_numeric
将参数转换为数值类型。
注意事项
默认情况下,
convert_dtypes
将尝试将一个系列(或DataFrame中的每个系列)转换为支持pd.NA
。通过使用选项convert_string
,convert_integer
,convert_boolean
和convert_boolean
,则可以将单个转换关闭为StringDtype
、整数扩展类型、BooleanDtype
或浮动扩展类型。对于对象数据类型的列,如果
infer_objects
是True
,在正常的Series/DataFrame构造过程中使用推理规则。然后,如果可能,将其转换为StringDtype
,BooleanDtype
或适当的整型或浮点型扩展类型,否则保留为object
。如果数据类型为整型,则转换为适当的整型扩展类型。
如果数据类型是数字,并且由所有整数组成,则转换为适当的整数扩展类型。否则,请转换为适当的浮动扩展类型。
在 1.2 版更改: 从Pandas 1.2开始,此方法还将浮点列转换为可为空的浮动扩展类型。
将来,随着支持以下功能的新数据类型的添加
pd.NA
,则此方法的结果将更改以支持这些新的数据类型。示例
>>> df = pd.DataFrame( ... { ... "a": pd.Series([1, 2, 3], dtype=np.dtype("int32")), ... "b": pd.Series(["x", "y", "z"], dtype=np.dtype("O")), ... "c": pd.Series([True, False, np.nan], dtype=np.dtype("O")), ... "d": pd.Series(["h", "i", np.nan], dtype=np.dtype("O")), ... "e": pd.Series([10, np.nan, 20], dtype=np.dtype("float")), ... "f": pd.Series([np.nan, 100.5, 200], dtype=np.dtype("float")), ... } ... )
从具有默认数据类型的DataFrame开始。
>>> df a b c d e f 0 1 x True h 10.0 NaN 1 2 y False i NaN 100.5 2 3 z NaN NaN 20.0 200.0
>>> df.dtypes a int32 b object c object d object e float64 f float64 dtype: object
转换DataFrame以使用尽可能好的数据类型。
>>> dfn = df.convert_dtypes() >>> dfn a b c d e f 0 1 x True h 10 <NA> 1 2 y False i <NA> 100.5 2 3 z <NA> <NA> 20 200.0
>>> dfn.dtypes a Int32 b string c boolean d string e Int64 f Float64 dtype: object
从一系列字符串和由表示的缺失数据开始
np.nan
。>>> s = pd.Series(["a", "b", np.nan]) >>> s 0 a 1 b 2 NaN dtype: object
获取具有dtype的系列
StringDtype
。>>> s.convert_dtypes() 0 a 1 b 2 <NA> dtype: string