【Pandas】pandas DataFrame convert_dtypes

打印 上一主题 下一主题

主题 1535|帖子 1535|积分 4605

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Pandas2.2 DataFrame

Conversion

方法描述DataFrame.astype(dtype[, copy, errors])用于将 DataFrame 中的数据转换为指定的数据类型DataFrame.convert_dtypes([infer_objects, …])用于将 DataFrame 中的数据类型转换为更合适的类型 pandas.DataFrame.convert_dtypes

pandas.DataFrame.convert_dtypes 是一个方法,用于将 DataFrame 中的数据类型转换为更合适的类型。这个方法可以资助自动推断和转换数据类型,使得数据处置惩罚更加高效和准确。
方法签名

  1. DataFrame.convert_dtypes(infer_objects=True, convert_string=True, convert_integer=True, convert_boolean=True, convert_floating=True, dtype_backend='numpy_nullable')
复制代码
参数阐明



  • infer_objects: 布尔值,默认为 True,表示是否尝试将 object 类型的列转换为更具体的类型(如 int64 或 float64)。
  • convert_string: 布尔值,默认为 True,表示是否将 object 类型的列转换为 string 类型。
  • convert_integer: 布尔值,默认为 True,表示是否将 object 类型的列转换为 integer 类型。
  • convert_boolean: 布尔值,默认为 True,表示是否将 object 类型的列转换为 boolean 类型。
  • convert_floating: 布尔值,默认为 True,表示是否将 object 类型的列转换为 floating 类型。
  • dtype_backend: 字符串,默认为 'numpy_nullable',表示使用的数据类型后端。可以是 'numpy_nullable' 或 'pyarrow'。
返回值



  • 返回一个新的 DataFrame,其中数据类型已转换。
示例

假设有一个 DataFrame 如下:
  1. import pandas as pd
  2. data = {
  3.     'A': ['1', '2', '3'],
  4.     'B': ['1.1', '2.2', '3.3'],
  5.     'C': ['True', 'False', 'True'],
  6.     'D': ['x', 'y', 'z']
  7. }
  8. df = pd.DataFrame(data)
  9. print("原始 DataFrame:")
  10. print(df)
  11. print("\n数据类型:")
  12. print(df.dtypes)
复制代码
输出:
  1. 原始 DataFrame:
  2.    A    B      C  D
  3. 0  1  1.1   True  x
  4. 1  2  2.2  False  y
  5. 2  3  3.3   True  z
  6. 数据类型:
  7. A    object
  8. B    object
  9. C    object
  10. D    object
  11. dtype: object
复制代码
示例1:使用默认参数转换数据类型

  1. df_converted = df.convert_dtypes()
  2. print("转换后的 DataFrame:")
  3. print(df_converted)
  4. print("\n数据类型:")
  5. print(df_converted.dtypes)
复制代码
效果:
  1. 转换后的 DataFrame:
  2.    A    B      C  D
  3. 0  1  1.1   True  x
  4. 1  2  2.2  False  y
  5. 2  3  3.3   True  z
  6. 数据类型:
  7. A    Int64
  8. B  Float64
  9. C    boolean
  10. D    string
  11. dtype: object
复制代码
示例2:禁用 convert_string

  1. df_converted_no_string = df.convert_dtypes(convert_string=False)
  2. print("禁用 convert_string 后的 DataFrame:")
  3. print(df_converted_no_string)
  4. print("\n数据类型:")
  5. print(df_converted_no_string.dtypes)
复制代码
效果:
  1. 禁用 convert_string 后的 DataFrame:
  2.    A    B      C  D
  3. 0  1  1.1   True  x
  4. 1  2  2.2  False  y
  5. 2  3  3.3   True  z
  6. 数据类型:
  7. A    Int64
  8. B  Float64
  9. C    boolean
  10. D    object
  11. dtype: object
复制代码
示例3:禁用 convert_integer

  1. df_converted_no_integer = df.convert_dtypes(convert_integer=False)
  2. print("禁用 convert_integer 后的 DataFrame:")
  3. print(df_converted_no_integer)
  4. print("\n数据类型:")
  5. print(df_converted_no_integer.dtypes)
复制代码
效果:
  1. 禁用 convert_integer 后的 DataFrame:
  2.    A    B      C  D
  3. 0  1  1.1   True  x
  4. 1  2  2.2  False  y
  5. 2  3  3.3   True  z
  6. 数据类型:
  7. A    object
  8. B  Float64
  9. C    boolean
  10. D    string
  11. dtype: object
复制代码
示例4:禁用 convert_boolean

  1. df_converted_no_boolean = df.convert_dtypes(convert_boolean=False)
  2. print("禁用 convert_boolean 后的 DataFrame:")
  3. print(df_converted_no_boolean)
  4. print("\n数据类型:")
  5. print(df_converted_no_boolean.dtypes)
复制代码
效果:
  1. 禁用 convert_boolean 后的 DataFrame:
  2.    A    B      C  D
  3. 0  1  1.1   True  x
  4. 1  2  2.2  False  y
  5. 2  3  3.3   True  z
  6. 数据类型:
  7. A    Int64
  8. B  Float64
  9. C    object
  10. D    string
  11. dtype: object
复制代码
示例5:禁用 convert_floating

  1. df_converted_no_floating = df.convert_dtypes(convert_floating=False)
  2. print("禁用 convert_floating 后的 DataFrame:")
  3. print(df_converted_no_floating)
  4. print("\n数据类型:")
  5. print(df_converted_no_floating.dtypes)
复制代码
效果:
  1. 禁用 convert_floating 后的 DataFrame:
  2.    A    B      C  D
  3. 0  1  1.1   True  x
  4. 1  2  2.2  False  y
  5. 2  3  3.3   True  z
  6. 数据类型:
  7. A    Int64
  8. B    object
  9. C    boolean
  10. D    string
  11. dtype: object
复制代码
通过这些示例,可以看到 pandas.DataFrame.convert_dtypes 方法如何自动推断和转换 DataFrame 中的数据类型。这些方法在数据预处置惩罚和类型转换时非常有用。
留意事项



  • convert_dtypes 方法可以将 DataFrame 中的数据类型转换为更合适的类型。
  • 可以通过设置差异的参数来控制哪些类型的转换应该被启用或禁用。
  • dtype_backend 参数可以指定使用的数据类型后端,例如 'numpy_nullable' 或 'pyarrow'。
  • 这些转换可以资助提高数据处置惩罚的效率和准确性。
示例代码及验证

为了验证 pandas.DataFrame.convert_dtypes 方法的效果,可以运行上述示例代码并查看输出效果。
  1. import pandas as pd
  2. # 创建一个示例 DataFrame
  3. data = {
  4.     'A': ['1', '2', '3'],
  5.     'B': ['1.1', '2.2', '3.3'],
  6.     'C': ['True', 'False', 'True'],
  7.     'D': ['x', 'y', 'z']
  8. }
  9. df = pd.DataFrame(data)
  10. print("原始 DataFrame:")
  11. print(df)
  12. print("\n数据类型:")
  13. print(df.dtypes)
  14. # 使用默认参数转换数据类型
  15. df_converted = df.convert_dtypes()
  16. print("\n转换后的 DataFrame:")
  17. print(df_converted)
  18. print("\n数据类型:")
  19. print(df_converted.dtypes)
  20. # 禁用 convert_string
  21. df_converted_no_string = df.convert_dtypes(convert_string=False)
  22. print("\n禁用 convert_string 后的 DataFrame:")
  23. print(df_converted_no_string)
  24. print("\n数据类型:")
  25. print(df_converted_no_string.dtypes)
  26. # 禁用 convert_integer
  27. df_converted_no_integer = df.convert_dtypes(convert_integer=False)
  28. print("\n禁用 convert_integer 后的 DataFrame:")
  29. print(df_converted_no_integer)
  30. print("\n数据类型:")
  31. print(df_converted_no_integer.dtypes)
  32. # 禁用 convert_boolean
  33. df_converted_no_boolean = df.convert_dtypes(convert_boolean=False)
  34. print("\n禁用 convert_boolean 后的 DataFrame:")
  35. print(df_converted_no_boolean)
  36. print("\n数据类型:")
  37. print(df_converted_no_boolean.dtypes)
  38. # 禁用 convert_floating
  39. df_converted_no_floating = df.convert_dtypes(convert_floating=False)
  40. print("\n禁用 convert_floating 后的 DataFrame:")
  41. print(df_converted_no_floating)
  42. print("\n数据类型:")
  43. print(df_converted_no_floating.dtypes)
复制代码
运行效果

运行上述代码后,你会看到以下输出:
  1. 原始 DataFrame:
  2.    A    B      C  D
  3. 0  1  1.1   True  x
  4. 1  2  2.2  False  y
  5. 2  3  3.3   True  z
  6. 数据类型:
  7. A    object
  8. B    object
  9. C    object
  10. D    object
  11. dtype: object
  12. 转换后的 DataFrame:
  13.    A    B      C  D
  14. 0  1  1.1   True  x
  15. 1  2  2.2  False  y
  16. 2  3  3.3   True  z
  17. 数据类型:
  18. A    Int64
  19. B  Float64
  20. C    boolean
  21. D    string
  22. dtype: object
  23. 禁用 convert_string 后的 DataFrame:
  24.    A    B      C  D
  25. 0  1  1.1   True  x
  26. 1  2  2.2  False  y
  27. 2  3  3.3   True  z
  28. 数据类型:
  29. A    Int64
  30. B  Float64
  31. C    boolean
  32. D    object
  33. dtype: object
  34. 禁用 convert_integer 后的 DataFrame:
  35.    A    B      C  D
  36. 0  1  1.1   True  x
  37. 1  2  2.2  False  y
  38. 2  3  3.3   True  z
  39. 数据类型:
  40. A    object
  41. B  Float64
  42. C    boolean
  43. D    string
  44. dtype: object
  45. 禁用 convert_boolean 后的 DataFrame:
  46.    A    B      C  D
  47. 0  1  1.1   True  x
  48. 1  2  2.2  False  y
  49. 2  3  3.3   True  z
  50. 数据类型:
  51. A    Int64
  52. B  Float64
  53. C    object
  54. D    string
  55. dtype: object
  56. 禁用 convert_floating 后的 DataFrame:
  57.    A    B      C  D
  58. 0  1  1.1   True  x
  59. 1  2  2.2  False  y
  60. 2  3  3.3   True  z
  61. 数据类型:
  62. A    Int64
  63. B    object
  64. C    boolean
  65. D    string
  66. dtype: object
复制代码
通过这些示例,可以看到 pandas.DataFrame.convert_dtypes 方法如何自动推断和转换 DataFrame 中的数据类型。这些方法在数据预处置惩罚和类型转换时非常有用。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

圆咕噜咕噜

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表