pandas.Series.convert_dtypes#
- Series.convert_dtypes(infer_objects=True, convert_string=True, convert_integer=True, convert_boolean=True, convert_floating=True, dtype_backend='numpy_nullable')[源代码]#
将列从 numpy 数据类型转换为支持
pd.NA
的最佳数据类型。- 参数:
- infer_objects布尔值, 默认为 True
是否应将对象数据类型转换为最佳可能的类型。
- convert_string布尔值, 默认为 True
是否应将对象数据类型转换为
StringDtype()
。- convert_integer布尔值, 默认为 True
是否可以在可能的情况下转换为整数扩展类型。
- convert_booleanbool, 默认为 True
是否应将对象数据类型转换为
BooleanDtypes()
。- convert_floatingbool, 默认为 True
是否可以在可能的情况下转换为浮点扩展类型。如果 convert_integer 也是 True,如果可以将浮点数忠实地转换为整数,则将优先使用整数 dtypes。
- dtype_backend{‘numpy_nullable’, ‘pyarrow’}, 默认为 ‘numpy_nullable’
应用于结果
DataFrame
或Series
的后端数据类型(仍在实验中)。行为如下:"pyarrow"
: 返回支持 pyarrow 的可空ArrowDtype
DataFrame
或Series
。
Added in version 2.0.
- 返回:
- Series 或 DataFrame
具有新数据类型的输入对象的副本。
参见
infer_objects
推断对象的数据类型。
to_datetime
将参数转换为日期时间。
to_timedelta
将参数转换为 timedelta。
to_numeric
将参数转换为数值类型。
备注
默认情况下,
convert_dtypes
将尝试将一个 Series(或 DataFrame 中的每个 Series)转换为支持pd.NA
的 dtypes。通过使用选项convert_string
、convert_integer
、convert_boolean
和convert_floating
,可以分别关闭对StringDtype
、整数扩展类型、BooleanDtype
或浮点扩展类型的单个转换。对于对象类型的列,如果
infer_objects
是True
,则使用与正常 Series/DataFrame 构造期间相同的推断规则。然后,如果可能,转换为StringDtype
、BooleanDtype
或适当的整数或浮点扩展类型,否则保留为object
。如果 dtype 是整数,则转换为适当的整数扩展类型。
如果 dtype 是数值型,并且包含所有整数,则转换为适当的整数扩展类型。否则,转换为适当的浮点扩展类型。
在未来,随着支持
pd.NA
的新 dtypes 被添加,此方法的结果将改变以支持这些新的 dtypes。例子
>>> 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 转换为使用最佳可能的 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
表示的缺失数据组成的序列开始。>>> s = pd.Series(["a", "b", np.nan]) >>> s 0 a 1 b 2 NaN dtype: object
获取一个具有
StringDtype
数据类型的 Series。>>> s.convert_dtypes() 0 a 1 b 2 <NA> dtype: string