df-drills pandas · Polars · DuckDB SQL · DuckDB Relational 题目列表 登录

读一个不规整的 CSV

中等 20-io 读取文件 iocsvnull-valuesdate-formatdtype

工作目录里有一个文件 data/raw.csv,把它正确地读成一张表。这个文件不太规整:

  • 分隔符是分号 ;,第一行是表头,列为 id;code;name;date;amount。字段可能用双引号包起来(引号内可以含分号)。
  • 只有 NA、- 和空字段表示缺失(读成 null)。其他字符串(例如 None、null、-0.5)都是普通的值,原样保留。
  • date 列的格式是 日.月.年(如 05.01.2026 表示 2026 年 1 月 5 日),读成 date 类型。
  • code 列是编号,必须保留前导零(读成字符串,00123 不能变成 123)。
  • id 读成整数,amount 读成浮点数,name 读成字符串。

输出

列为 id, code, name, date, amount,每行对应文件里的一行数据,行顺序不限。

工作目录里的文件 (case base)

data/raw.csv
id;code;name;date;amount
1;00123;Alpha;05.01.2026;12.5
2;04500;Beta;17.02.2026;NA
3;-;Gamma;28.02.2026;7
4;99000;-;01.03.2026;100.25
5;00007;Delta;NA;3.75
6;12345;Epsilon;31.12.2025;-
7;01010;Zeta;09.11.2025;-20.5
共 8 行

期望输出 (case base,行顺序不限)

#idInt64codeStringnameStringdateDateamountFloat64
1 1 00123 Alpha 2026-01-05 12.5
2 2 04500 Beta 2026-02-17 null
3 3 null Gamma 2026-02-28 7.0
4 4 99000 null 2026-03-01 100.25
5 5 00007 Delta null 3.75
6 6 12345 Epsilon 2025-12-31 null
7 7 01010 Zeta 2025-11-09 -20.5
共 7 行