maxframe.dataframe.Series.convert_dtypes#
- Series.convert_dtypes(infer_objects=True, convert_string=True, convert_integer=True, convert_boolean=True, convert_floating=True, dtype_backend='numpy')#
将列转换为支持
pd.NA的最佳数据类型。- 参数:
infer_objects (bool, default True) -- 是否应将 object 类型转换为最佳的类型。
convert_string (bool, default True) -- 是否应将 object 类型转换为
StringDtype()。convert_integer (bool, default True) -- 是否可以在可能的情况下,将转换执行为整数扩展类型。
convert_boolean (bool, defaults True) -- 是否应将 object 类型转换为
BooleanDtype()。convert_floating (bool, defaults True) -- 是否可以在可能的情况下,将转换执行为浮点扩展类型。如果 convert_integer 也为 True,则如果浮点数可以精确转换为整数时,优先使用整数类型。
- 返回:
具有新类型的输入对象的副本。
- 返回类型:
参见
infer_objects推断对象的数据类型。
to_datetime将参数转换为 datetime 类型。
to_timedelta将参数转换为 timedelta 类型。
to_numeric将参数转换为数值类型。
备注
默认情况下,
convert_dtypes会尝试将 Series(或 DataFrame 中的每个 Series)转换为支持pd.NA的数据类型。通过使用选项convert_string、convert_integer、convert_boolean和convert_floating,可以分别关闭对StringDtype、整数扩展类型、BooleanDtype或浮点扩展类型的转换。对于 object 类型的列,如果
infer_objects为True,则使用与常规 Series/DataFrame 构造时相同的推断规则。然后,如果可能的话,将其转换为StringDtype、BooleanDtype或适当的整数或浮点扩展类型,否则保留为object类型。如果数据类型是整数类型,则转换为适当的整数扩展类型。
如果数据类型是数值型,并且全部为整数,则转换为适当的整数扩展类型。否则,转换为适当的浮点扩展类型。
在 1.2 版本发生变更: 从 pandas 1.2 开始,此方法还会将浮点列转换为可空的浮点扩展类型。
将来,随着支持
pd.NA的新数据类型增加,此方法的结果将随之变化以支持这些新的数据类型。示例
>>> import maxframe.tensor as mt >>> import maxframe.dataframe as md >>> df = md.DataFrame( ... { ... "a": md.Series([1, 2, 3], dtype=mt.dtype("int32")), ... "b": md.Series(["x", "y", "z"], dtype=mt.dtype("O")), ... "c": md.Series([True, False, mt.nan], dtype=mt.dtype("O")), ... "d": md.Series(["h", "i", mt.nan], dtype=mt.dtype("O")), ... "e": md.Series([10, mt.nan, 20], dtype=mt.dtype("float")), ... "f": md.Series([mt.nan, 100.5, 200], dtype=mt.dtype("float")), ... } ... )
从一个具有默认数据类型的 DataFrame 开始。
>>> df.execute() 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.execute() a int32 b object c object d object e float64 f float64 dtype: object
将 DataFrame 转换为使用最佳可能的数据类型。
>>> dfn = df.convert_dtypes() >>> dfn.execute() 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.execute() a Int32 b string c boolean d string e Int64 f Float64 dtype: object
从一个包含字符串和由
np.nan表示的缺失数据的 Series 开始。>>> s = md.Series(["a", "b", mt.nan]) >>> s.execute() 0 a 1 b 2 NaN dtype: object
获得一个具有
StringDtype数据类型的 Series。>>> s.convert_dtypes().execute() 0 a 1 b 2 <NA> dtype: string