看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
pandas 的 convert_dtypes 是一个用于将 DataFrame 中列和 Series 的数据类型转换为最合适的类型的方法。这个方法可以帮助你自动将数据类型从例如 object 类型转换为更具体的类型(如 string 或 Int64),以提高数据的内存效率和操作效率。
使用支持pd.NA的数据类型将列转换为最佳的数据类型。
convert_dtypes(infer_objects=True,
convert_string=True,
convert_integer=True,
convert_boolean=True,
convert_floating=True,
dtype_backend='numpy_nullable'
)
可选参数:
默认情况下,convert_dtypes 将尝试将 Series(或 DataFrame 中的每个 Series)转换为支持 pd.NA 的数据类型。通过使用选项 convert_string、convert_integer、convert_boolean 和 convert_floating,可以分别关闭对 StringDtype、整数扩展类型、BooleanDtype 或浮点扩展类型的个别转换。
对于对象数据类型的列,如果 infer_objects 为 True,则使用与正常 Series/DataFrame 构造期间相同的推断规则。然后,如果可能,转换为 StringDtype、BooleanDtype 或适当的整数或浮点扩展类型,否则保留为对象类型。
如果数据类型为整数,则转换为适当的整数扩展类型。
如果数据类型为数字,并且由所有整数组成,则转换为适当的整数扩展类型。否则,转换为适当的浮点扩展类型。
将来,随着支持 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")),
}
)
'''
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
'''
获取 Series 的 StringDtype 类型。
s.convert_dtypes()
'''
0 a
1 b
2 <NA>
dtype: string
'''
更新时间:2024-07-12 16:34:12 标签:pandas python 类型 转换