按列扫描CSV,确定各列最强数据类型并统一应用
CSV列最强数据类型推断方案
核心需求
我们需要对CSV文件按列进行扫描,为每一列确定最强数据类型,并将该类型统一应用到整列。类型优先级规则为:str(字符串) > float(浮点数) > int(整数),优先级的设定源于目标输出文件类型的要求。
示例数据与类型说明
先看你给出的示例CSV(注:示例未使用逗号分隔,采用竖线/加号排版):
+ C1 + C2 + C3 + C4 R1 | i | s | i | f R2 | i | f | i | i R3 | i | i | s | f
其中类型缩写含义:
i=int(整数类型)f=float(浮点数类型)s=str(字符串类型)
每列最强类型推导
根据优先级规则,逐列分析:
- C1列:所有行的类型都是
i(int),没有更高优先级的类型出现,因此最强类型为int - C2列:行中出现了
s、f、i三种类型,其中str优先级最高,所以整列最强类型为str - C3列:行中出现了
i和s,str优先级高于int,因此最强类型为str - C4列:行中出现了
f和i,float优先级高于int,所以最强类型为float
实现思路参考
如果要将这个逻辑落地为代码,大致流程如下:
- 读取CSV文件,逐行解析每个单元格的原始数据类型
- 为每一列初始化一个「当前最强类型」(默认设为最低优先级的
int) - 遍历每个单元格,对比其类型与对应列的当前最强类型:若单元格类型优先级更高,则更新列的最强类型
- 扫描完成后,将整列数据统一转换为该列的最强类型
内容的提问来源于stack exchange,提问作者pstatix
相关产品推荐
相关产品推荐

