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,则如果浮点数可以精确转换为整数时,优先使用整数类型。

返回:

具有新类型的输入对象的副本。

返回类型:

Series or DataFrame

参见

infer_objects

推断对象的数据类型。

to_datetime

将参数转换为 datetime 类型。

to_timedelta

将参数转换为 timedelta 类型。

to_numeric

将参数转换为数值类型。

备注

默认情况下,convert_dtypes 会尝试将 Series(或 DataFrame 中的每个 Series)转换为支持 pd.NA 的数据类型。通过使用选项 convert_stringconvert_integerconvert_booleanconvert_floating,可以分别关闭对 StringDtype、整数扩展类型、BooleanDtype 或浮点扩展类型的转换。

对于 object 类型的列,如果 infer_objectsTrue,则使用与常规 Series/DataFrame 构造时相同的推断规则。然后,如果可能的话,将其转换为 StringDtypeBooleanDtype 或适当的整数或浮点扩展类型,否则保留为 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