pandas.DataFrame.convert_dtypes #

数据框。Convert_dtypesinfer_objects = True convert_string = True convert_integer = True convert_boolean = True convert_floating = True dtype_backend = 'numpy_nullable'[来源]

使用 dtypes 支持将列转换为最佳可能的 dtypes pd.NA

参数
infer_objects bool, 默认 True

对象数据类型是否应转换为最佳类型。

Convert_string bool, 默认 True

对象数据类型是否应转换为StringDtype().

Convert_integer bool, 默认 True

如果可能的话,是否可以转换为整数扩展类型。

Convert_boolean布尔值,默认 True

对象数据类型是否应转换为BooleanDtypes().

Convert_floating bool,默认 True

如果可能的话,是否可以转换为浮动扩展类型。如果convert_integer也为True,如果浮点数可以忠实地转换为整数,则将优先考虑整数数据类型。

dtype_backend {'numpy_nullable', 'pyarrow'}, 默认 'numpy_nullable'

应用于结果的后端数据类型DataFrame (仍处于试验阶段)。行为如下:

  • "numpy_nullable":返回 nullable-dtype-backed DataFrame (默认)。

  • "pyarrow":返回 pyarrow 支持的可为空的ArrowDtype DataFrame。

2.0版本中的新增内容。

返回
系列或数据框

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

也可以看看

infer_objects

推断对象的数据类型。

to_datetime

将参数转换为日期时间。

to_timedelta

将参数转换为 timedelta。

to_numeric

将参数转换为数字类型。

笔记

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

对于对象类型列,如果infer_objectsis True,则使用正常 Series/DataFrame 构造期间的推理规则。然后,如果可能,转换为StringDtypeBooleanDtype或适当的整数或浮点扩展类型,否则保留为object

如果数据类型是整数,则转换为适当的整数扩展类型。

如果数据类型是数字,并且由所有整数组成,请转换为适当的整数扩展类型。否则,转换为适当的浮动扩展类型。

将来,随着添加支持的新数据类型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[python]
c           boolean
d    string[python]
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