Python 读取 CSV 文件并删除前五列
在 Python 中删除 CSV 文件的前五列有两种常用方法:使用 pandas
库(推荐)或内置的 csv
模块。以下是详细代码示例:
方法 1:使用 pandas 库(高效简洁)
import pandas as pd
# 读取 CSV 文件
df = pd.read_csv('input.csv')
# 删除前五列(列索引 0-4)
df = df.iloc[:, 5:]
# 保存处理后的数据到新文件
df.to_csv('output.csv', index=False)
代码解析:
pd.read_csv()
读取 CSV 文件为 DataFrameiloc[:, 5:]
使用位置索引选择第 5 列之后的所有列(:
表示所有行)index=False
参数避免输出行索引列- 处理百万行数据仅需几秒,适合大型文件
方法 2:使用 csv 模块(无需额外依赖)
import csv
with open('input.csv', 'r') as infile, open('output.csv', 'w', newline='') as outfile:
reader = csv.reader(infile)
writer = csv.writer(outfile)
for row in reader:
# 删除前五列(保留索引5及之后的元素)
writer.writerow(row[5:])
代码解析:
- 使用
csv.reader
逐行读取文件 row[5:]
对每行进行切片操作,跳过前 5 个元素newline=''
防止输出文件出现空行- 内存效率高,适合逐行处理超大文件
注意事项
- 列索引:前五列对应索引 0-4,保留列从索引 5 开始
- 列名处理:pandas 方法会自动保留剩余列的标题
- 异常处理:可添加
try-except
块处理文件不存在或格式错误 - 内存优化:对于超大文件(>1GB),推荐使用
chunksize
参数分块处理:
# pandas 分块处理示例
chunk_iter = pd.read_csv('big_file.csv', chunksize=10000)
for chunk in chunk_iter:
chunk.iloc[:, 5:].to_csv('output.csv', mode='a', header=False)
提示:pandas 方法代码更简洁且支持复杂数据处理,推荐作为首选方案。
相关问题
- 如何仅删除 CSV 文件中的特定列(非连续列)?
- 处理包含中文的 CSV 文件时需要注意哪些编码问题?
- pandas 读取 CSV 时如何跳过不规则的行?
- 如何在不加载到内存的情况下处理超大型 CSV 文件?
- 删除列后如何保留原始数据类型并进行类型转换?
-
: Python 读取CSV指定列使用pandas读取CSV指定列示例
- python读取csv文件使用内置的csv模块
- 使用Python读取CSV文件并计算每列的平均值