weixin_46530456 2024-03-24 00:02 采纳率: 0%
浏览 6

pandas 数据类型相关问题 (基础)

对于如下的一个 pandas 里的 dataframe (命名为a):

img

代码:

print(pd.api.types.is_numeric_dtype(a)) 
for index, row in a.iterrows():
    print(pd.api.types.is_numeric_dtype(row))
    print([pd.api.types.is_numeric_dtype(pd.Series([val])) for val in row])
    print('_'*30)

结果:

img

为什么:
print(pd.api.types.is_numeric_dtype(a))print(pd.api.types.is_numeric_dtype(row)) 的结果是False,而 print([pd.api.types.is_numeric_dtype(pd.Series([val])) for val in row]) 是True呢? dataframe 这几列数据类型都是 数字型啊?

  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-03-24 00:02
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题分析: 首先,需要了解一下 pandas 中的数据类型。 在 pandas 中,存在多种数据类型,包括 object、int64、float64、bool 等,其中 object 是最通用的数据类型,可以表示任意数据类型。 由于 object 类型的列可以包含任意的 Python 对象,因此当存在 object 类型的列时,整个 dataframe 的数据类型会变成 object 类型。 例如,在这个 dataframe 中,由于第一列的数据类型是 object,因此整个 dataframe 的数据类型就是 object 类型。 其次,需要了解一下 pd.api.types.is_numeric_dtype 函数的使用方法。 pd.api.types.is_numeric_dtype 函数是用来判断一个 pandas 数据类型是否为数字型的函数。 因此,当对整个 dataframe 使用 pd.api.types.is_numeric_dtype 函数时,由于 dataframe 的数据类型为 object,因此返回值为 False。 当对 dataframe 中的每一行或每一列使用 pd.api.types.is_numeric_dtype 函数时,由于每一行或每一列的数据类型都是一致的,因此可以正确判断该行或该列数据类型是否为数字型,返回值为 True。 解决方案: 要判断整个 dataframe 中的数据类型是否为数字型,需要先将整个 dataframe 的数据类型转换为数字型,可以使用 pd.to_numeric 函数。 例如,将 dataframe 中的所有数据都转换成 float 类型的数据,可以使用以下代码: a = a.apply(pd.to_numeric, errors='coerce') 然后再对整个 dataframe 使用 pd.api.types.is_numeric_dtype 函数,就可以正确地判断整个 dataframe 是否为数字型了。 参考代码:
    import pandas as pd
    a = pd.DataFrame({'col1': ['1', '2', '3'], 'col2': [4, 5, 6], 'col3': [7.0, 8.0, 9.0]})
    # 打印整个 dataframe 的数据类型
    print(pd.api.types.is_numeric_dtype(a))
    # 打印每一行的数据类型
    for index, row in a.iterrows():
        print(pd.api.types.is_numeric_dtype(row))
        print([pd.api.types.is_numeric_dtype(pd.Series([val])) for val in row])
        print('_' * 30)
    # 将 dataframe 中的所有数据转换成 float 类型的数据
    a = a.apply(pd.to_numeric, errors='coerce')
    # 再次打印整个 dataframe 的数据类型
    print(pd.api.types.is_numeric_dtype(a))
    

    参考输出:

    False
    False
    [True, True, True]
    ______________________________
    False
    [True, True, True]
    ______________________________
    False
    [True, True, True]
    ______________________________
    True
    
    评论

报告相同问题?

问题事件

  • 创建了问题 3月24日

悬赏问题

  • ¥20 找辅导 初学者 想实现一个项目 没有方向
  • ¥15 关于渗漏场的电场分布模拟
  • ¥24 matlab怎么修改仿真初始时间
  • ¥15 两分段线性回归模型分析阈值效应
  • ¥15 前端和后端代码都没报错,但是点登录没反应的?
  • ¥100 需要远程解决QSQLITE问题!
  • ¥15 利用光场表达式画出初始光场强度分布图像等几个问题在这两个图片里
  • ¥15 gozero求手把手教学,400一天
  • ¥15 泥浆冲清水的泥浆分布
  • ¥15 LASSO回归分析筛选关键基因,适合多大样本量?