如何从单个CSV文件读取多个Polars DataFrame
将单CSV文件中的多数据表转为Polars DataFrame列表
Polars的scan_csv主要适配多文件或单文件单表场景,直接处理单文件多表需要先拆分内容。这里提供简洁的实现方式,无需复杂文本解析:
- 读取整个CSV文件内容,按空行分割出独立的数据表块
- 对每个表块用
StringIO模拟文件对象,再通过Polars的read_csv解析成DataFrame
代码实现
import polars as pl from io import StringIO def split_csv_to_dfs(file_path): # 读取文件内容并按空行分割数据表 with open(file_path, 'r', encoding='utf-8') as f: content = f.read() # 过滤空块,处理首尾空行或连续空行的情况 table_blocks = [block.strip() for block in content.split('\n\n') if block.strip()] # 逐个解析表块为DataFrame df_list = [] for block in table_blocks: df = pl.read_csv(StringIO(block)) df_list.append(df) return df_list # 使用示例 dfs = split_csv_to_dfs('multi_table.csv') # 查看第一个数据表 print(dfs[0])
注意事项
- 若存在连续多换行的分隔,
split('\n\n')依然有效,后续strip()会清理多余空白 - 若数据表使用自定义分隔符(如
;),可给read_csv添加separator=';'参数 - 大文件场景下,可改为逐行读取累积表块,避免一次性加载全量内容占用过多内存
内容的提问来源于stack exchange,提问作者Aditya Sengupta
相关产品推荐
相关产品推荐

