pandas.DataFrame.convert_dtypes#

DataFrame.convert_dtypes(infer_objects=True, convert_string=True, convert_integer=True, convert_boolean=True, convert_floating=True, dtype_backend='numpy_nullable')[源代码]#

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

Parameters:
infer_objectsbool, default True

是否应将 object dtypes 转换为最佳可用类型。

convert_stringbool, default True

是否应将 object dtypes 转换为 StringDtype()

convert_integerbool, default True

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

convert_booleanbool, 默认 True

是否应将 object dtypes 转换为 BooleanDtype()

convert_floatingbool, 默认 True

如果可能,是否可以转换为浮点数扩展类型。如果 convert_integer 也为 True,则如果浮点数可以被忠实地转换为整数,则将优先选择整数 dtype。

dtype_backend{‘numpy_nullable’, ‘pyarrow’}, 默认 ‘numpy_nullable’

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

  • "numpy_nullable":返回支持可空 dtype 的 DataFrame (默认)。

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

在 2.0 版本加入.

Returns:
Series 或 DataFrame

具有新 dtype 的输入对象的副本。

参见

infer_objects

推断对象的 dtypes。

to_datetime

将参数转换为 datetime。

to_timedelta

将参数转换为 timedelta。

to_numeric

将参数转换为数字类型。

Notes

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

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

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

如果 dtype 是数值型的,并且全部由整数组成,则转换为适当的整数扩展类型。否则,转换为适当的浮点数扩展类型。

未来,随着支持 pd.NA 的新 dtypes 的添加,此方法的結果将更改为支持这些新 dtypes。

Examples

>>> 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")),
...     }
... )

从具有默认 dtypes 的 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 转换为使用最佳可用 dtypes。

>>> 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 表示的缺失数据的 Series 开始。

>>> s = pd.Series(["a", "b", np.nan])
>>> s
0      a
1      b
2    NaN
dtype: object

获得一个 dtype 为 StringDtype 的 Series。

>>> s.convert_dtypes()
0       a
1       b
2    <NA>
dtype: string