You need to enable JavaScript to run this app. Python Pandas如何检查一维与多维数组是否为float/int类型
优惠活动
大模型
产品
解决方案
定价
更多

Python Pandas如何检查一维与多维数组是否为float/int类型

Pandas CSV列数值类型校验实现方案

现有代码的核心问题

  • 导入语法错误:import pandas pd缺少as关键字,正确写法为import pandas as pd
  • 类型判断逻辑错误:check["Multi"]获取的是Pandas的Series整列对象,不是单个单元格的值,直接用isinstance判断不可能匹配int/float类型
  • 数据解析缺失:CSV中|分隔的数组结构默认会被读取为字符串,需要先解析为Python列表再做类型校验

正确实现代码

针对Multi列2维数组、Single列1维数组的校验需求,完整实现如下:

import pandas as pd
import ast

def parse_and_validate(cell_value, expected_dim):
    # 替换自定义分隔符|为标准逗号,转换为Python可识别的列表格式
    processed_str = cell_value.replace('|', ',')
    try:
        data = ast.literal_eval(processed_str)
    except (SyntaxError, ValueError):
        return False, f"格式解析失败:{cell_value}"
    
    # 递归校验维度和元素类型
    def _check_nested(arr, dim):
        if dim == 1:
            for item in arr:
                if not isinstance(item, (int, float)):
                    return False, f"存在非数字元素:{item}"
            return True, ""
        for sub_arr in arr:
            if not isinstance(sub_arr, list):
                return False, f"维度不匹配,期望{expected_dim}维"
            res, err_msg = _check_nested(sub_arr, dim-1)
            if not res:
                return False, err_msg
        return True, ""
    
    return _check_nested(data, expected_dim)

# 读取CSV时指定dtype=str避免自动类型转换
df = pd.read_csv("file.csv", dtype=str)

# 校验Multi列(2维数组要求)
for row_idx, cell_val in enumerate(df["Multi"]):
    is_valid, err_info = parse_and_validate(cell_val, expected_dim=2)
    if not is_valid:
        print(f"第{row_idx+1}行Multi列校验失败:{err_info},需为仅包含int/float的2维数组")

# 校验Single列(1维数组要求)
for row_idx, cell_val in enumerate(df["Single"]):
    is_valid, err_info = parse_and_validate(cell_val, expected_dim=1)
    if not is_valid:
        print(f"第{row_idx+1}行Single列校验失败:{err_info},需为仅包含int/float的1维数组")

运行效果说明

针对你提供的示例CSV,运行后输出结果为:

第1行Multi列校验失败:存在非数字元素:yes,需为仅包含int/float的2维数组

和实际报错场景匹配,可正常识别非数字元素、维度不匹配、格式错误三类异常。

内容的提问来源于stack exchange,提问作者tony selcuk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 05:15:07