如何批量修改ML Studio中CSV列的推断数据类型?
批量修正ML Studio中CSV列的decimal类型推断问题
方法一:用Execute Python Script批量转换列类型
这是最高效的批量处理方式,无需逐列指定:
- 将CSV导入模块的输出连接到Execute Python Script模块的
Dataset1输入端口 - 编辑脚本,替换默认代码为以下内容:
import pandas as pd def azureml_main(dataframe1 = None, dataframe2 = None): # 遍历所有列,自动转换可识别为数值的string列 for col in dataframe1.columns: if dataframe1[col].dtype == 'object': # 尝试转换为数值类型,无法转换的列保留原类型 dataframe1[col] = pd.to_numeric(dataframe1[col], errors='coerce') return dataframe1,
- 运行模块后,所有原本应为decimal的string列会被自动转换为数值类型,空值会被统一处理为NaN(符合decimal类型的空值逻辑)
如果需要严格的decimal.Decimal类型而非float,可以修改脚本:
import pandas as pd from decimal import Decimal def azureml_main(dataframe1 = None, dataframe2 = None): for col in dataframe1.columns: if dataframe1[col].dtype == 'object': dataframe1[col] = dataframe1[col].apply( lambda x: Decimal(x) if pd.notnull(x) and x != '' else None ) return dataframe1,
方法二:调整CSV导入的架构推断规则
如果ML Studio的CSV导入模块支持调整推断参数:
- 找到模块的"推断架构"设置,将默认的"前1000行推断"改为"全部行"或大于1000的行数,让系统读取到非空值后自动推断为decimal类型
- 此方法无需写代码,但仅适用于非空值出现在1000行之后的场景
内容的提问来源于stack exchange,提问作者OK 400
相关产品推荐
相关产品推荐

