DataFrame.astype(dtype, copy=True, errors='raise', **kwargs)
将pandas对象转换为指定的dtype dtype。
参数: | dtype : 数据类型或列名称 - >数据类型 使用 将整个pandas对象强制转换为相同的类型。 或者,使用{col:dtype,...},其中col是列标签,
用于将一个或多个 copy : 返回副本时 ,然后可能会传播到其他pandas对象)。 errors : 控制提供 raise :允许引发异常 ignore:抑制异常。出错时返回原始对象 版本0.20.0中的新功能。 kwargs : 传递给构造函数的关键字参数 |
返回: | casted : 与调用者类型相同 |
例子,
1)转换整个 DataFrame 的数据类型
import pandas as pd # 创建一个示例 DataFrame df = pd.DataFrame({ 'A': [1, 2, 3], 'B': [4.0, 5.1, 6.2], 'C': ['7', '8', '9'] }) print("原始 DataFrame:") print(df) print(df.dtypes) # 将所有列转换为字符串类型 df_str = df.astype(str) print("\n转换为字符串类型后的 DataFrame:") print(df_str) print(df_str.dtypes)
2)转换特定列的数据类型
# 将列 'C' 转换为整数类型 df['C'] = df['C'].astype(int) print("\n将列 'C' 转换为整数类型后的 DataFrame:") print(df) print(df.dtypes)
3)使用字典同时转换多个列的数据类型
# 使用字典同时转换多列的数据类型 df = df.astype({'A': 'float64', 'B': 'int64'}) print("\n同时转换多列类型后的 DataFrame:") print(df) print(df.dtypes)
4)处理转换错误
# 示例 DataFrame,其中包含无法转换为数字的值 df_with_errors = pd.DataFrame({ 'A': ['1', '2', 'three'], 'B': ['4.0', '5.1', '6.2'] }) print("\n包含错误的 DataFrame:") print(df_with_errors) # 尝试将列 'A' 转换为整数类型,忽略错误 df_with_errors['A'] = df_with_errors['A'].astype(int, errors='ignore') print("\n忽略错误后的 DataFrame:") print(df_with_errors) print(df_with_errors.dtypes)
5)使用示例
import pandas as pd # 创建一个示例 Series,dtype 为 int32 ser = pd.Series([1, 2], dtype='int32') print("原始 Series:") print(ser) # 转换为 int64 类型 ser_int64 = ser.astype('int64') print("\n转换为 int64 类型后的 Series:") print(ser_int64) # 转换为分类类型 ser_category = ser.astype('category') print("\n转换为分类类型后的 Series:") print(ser_category) # 转换为自定义排序的有序分类类型 cat_dtype = pd.api.types.CategoricalDtype(categories=[2, 1], ordered=True) ser_ordered_category = ser.astype(cat_dtype) print("\n转换为自定义排序的有序分类类型后的 Series:") print(ser_ordered_category) # 注意 copy=False 的行为 s1 = pd.Series([1, 2]) s2 = s1.astype('int64', copy=False) s2[0] = 10 print("\ns1 在 s2 更改后的值:") print(s1) # 注意 s1[0] 也发生了变化