pandas.Series.convert_dtypes#

Series.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_stringconvert_integerconvert_booleanconvert_boolean ,则可以将单个转换关闭为 StringDtype 、整数扩展类型、 BooleanDtype 或浮动扩展类型。

对于对象数据类型的列,如果 infer_objectsTrue ,在正常的Series/DataFrame构造过程中使用推理规则。然后,如果可能,将其转换为 StringDtypeBooleanDtype 或适当的整型或浮点型扩展类型,否则保留为 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