You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何修改字符串值并转换为int、bool等类型,实现clean_data数据清洗函数

实现代码

首先你需要提前定义好列索引常量(和业务规则保持一致):

COLUMN_RIDING = 0
COLUMN_VOTER = 1
COLUMN_RANK = 2
COLUMN_RANGE = 3
COLUMN_APPROVAL = 4

以下是仅用Python内置函数实现的clean_data函数,完全符合修改入参、无返回值的要求:

from typing import List

def clean_data(data: List[List[str]]) -> None:
    """Modify data so that the applicable string values are converted to their
    appropriate type.

    The indexes of the string values that are converted, and their
    corresponding type, are:
        - COLUMN_RIDING is an int
        - COLUMN_VOTER is an int
        - COLUMN_RANK is a list of strings
        - COLUMN_RANGE is a list of integers
        - COLUMN_APPROVAL is a list of booleans

    >>> row = ['0', '1', 'NDP;Liberal;Green;CPC', '1;4;2;3', 'NO;YES;NO;NO']
    >>> clean_data([row])
    >>> row == SAMPLE_DATA_1[0]
    True
    >>> row = ['117', '12', 'Liberal;CPC;NDP;Green', '4;0;5;0', 'YES;NO;YES;NO']
    >>> clean_data([row])
    >>> row == [117, 12, ['CPC', 'GREEN', 'LIBERAL', 'NDP'], [4, 0, 5, 0], [True, False, True, False]
    True
    """
    for row in data:
        # 选举区列:字符串转整数
        row[COLUMN_RIDING] = int(row[COLUMN_RIDING])
        # 选民列:字符串转整数
        row[COLUMN_VOTER] = int(row[COLUMN_VOTER])
        # 排名列:分号拆分、转大写、按字母升序排序
        rank_items = row[COLUMN_RANK].split(';')
        row[COLUMN_RANK] = sorted([item.upper() for item in rank_items])
        # 区间列:分号拆分、每个元素转整数
        row[COLUMN_RANGE] = [int(num) for num in row[COLUMN_RANGE].split(';')]
        # 同意列:分号拆分、YES转True/NO转False
        approval_items = row[COLUMN_APPROVAL].split(';')
        row[COLUMN_APPROVAL] = [item == 'YES' for item in approval_items]

关键说明

  • Python中列表是可变对象,直接修改遍历到的row元素,就会同步修改原传入的data参数,符合函数无返回值的设计要求
  • 排名列的处理完全匹配示例输出:拆分后转大写再按字母排序,和第二个示例的返回结果完全一致
  • 所有转换逻辑仅用到int、split、upper、sorted等Python内置函数,没有引入任何第三方依赖

原代码问题梳理

你之前的代码存在两个核心逻辑错误:

  • 函数要求无返回值、直接修改入参,不需要额外生成新列表返回
  • COLUMN_RIDING是列的固定索引常量,不是行数据列表,不能用COLUMN_RIDING[i]判断元素类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:39:01