如何使用Python将CSV文件按固定列数拆分存储为多个子文件
CSV按固定列数拆分问题修复
原代码错误点
- 文件名编号错误:
enumerate默认从0开始计数,生成的文件名会从cleanBaby0.csv开始,不符合要求的从1开始命名规则 - 表头格式错误:每个表头后都追加逗号,会导致最后一列表头末尾多出多余逗号,破坏CSV标准格式
- 核心逻辑错误:你需要实现的是按列拆分,但代码中
csvfile[n+100:n]是对CSV的行做切片,且切片范围上限小于下限,得到的是空内容,完全没有实现按列截取的需求 - 冗余操作:已经用pandas读取了完整的DataFrame,不需要再单独用
open读一次源文件的行内容
正确实现代码
import pandas as pd # 读取源CSV文件 df = pd.read_csv(r"D:\Users\SPate233\Downloads\iMedical\raw_layer\cleanBaby.csv", delimiter=',') col_count = df.shape[1] split_step = 100 # 遍历每一组列范围 for idx, start_col in enumerate(range(0, col_count, split_step)): # 截取当前分组的所有列 end_col = start_col + split_step split_df = df.iloc[:, start_col:end_col] # 按规则生成文件名(编号从1开始) save_path = r"D:\Users\SPate233\Downloads\iMedical\raw_layer\cleanBaby{}.csv".format(idx + 1) # 输出CSV,保留表头,不写入pandas默认行索引 split_df.to_csv(save_path, index=False)
上述代码会自动按每100列拆分一个文件,最后一个文件自动保留剩余的22列,文件名和存储范围完全符合你的要求。
内容的提问来源于stack exchange,提问作者Shivika Patel
相关产品推荐
相关产品推荐

