使用python自动拆分并合并多个csv文件
时间: 2025-07-26 12:27:09 浏览: 19
<think>我们被要求使用Python脚本来拆分和合并多个CSV文件。根据引用[1]和引用[4],我们知道Pandas库非常适合处理CSV文件。引用[1]展示了如何读取CSV文件并自定义列名,引用[4]则提到Pandas可以操作多种文件格式,包括CSV。拆分CSV文件通常指将一个大文件分割成多个小文件,而合并则是将多个小文件合并成一个大文件。步骤:1.拆分CSV:-读取整个CSV文件。-决定如何拆分(例如按行数、按某个列的值等)。-将数据分割成多个部分,并分别保存为新的CSV文件。2.合并CSV:-获取需要合并的CSV文件列表。-逐个读取这些文件,并将它们追加到一个DataFrame中。-将合并后的DataFrame保存为一个新的CSV文件。我们使用Pandas库来实现这些操作。注意:如果文件非常大,可能需要考虑分块读取和写入,以避免内存不足。但这里我们先假设文件大小适中。拆分示例:按行数拆分,比如每1000行一个文件。合并示例:将多个CSV文件合并成一个。下面分别给出两个函数:split_csv和merge_csv。</think>### Python脚本实现CSV文件的拆分与合并
#### CSV文件拆分
拆分CSV文件通常有两种方式:
1. **按行数拆分**:将大文件分割成固定行数的小文件
2. **按列值拆分**:根据特定列的值分组保存
```python
import pandas as pd
import os
def split_csv(input_file, output_dir, chunk_size=1000, split_column=None):
"""
拆分CSV文件
:param input_file: 输入文件路径
:param output_dir: 输出目录
:param chunk_size: 每个文件最大行数(按行拆分时)
:param split_column: 按列拆分的列名
"""
if not os.path.exists(output_dir):
os.makedirs(output_dir)
base_name = os.path.splitext(os.path.basename(input_file))[0]
if split_column: # 按列值拆分
df = pd.read_csv(input_file)
for value, group in df.groupby(split_column):
output_file = f"{output_dir}/{base_name}_{value}.csv"
group.to_csv(output_file, index=False)
print(f"生成文件: {output_file} ({len(group)}行)")
else: # 按行数拆分
for i, chunk in enumerate(pd.read_csv(input_file, chunksize=chunk_size)):
output_file = f"{output_dir}/{base_name}_part{i+1}.csv"
chunk.to_csv(output_file, index=False)
print(f"生成文件: {output_file} ({len(chunk)}行)")
```
#### CSV文件合并
```python
def merge_csv(input_dir, output_file, file_pattern="*.csv"):
"""
合并CSV文件
:param input_dir: 输入目录
:param output_file: 输出文件路径
:param file_pattern: 文件匹配模式
"""
all_files = [os.path.join(input_dir, f)
for f in os.listdir(input_dir)
if f.endswith('.csv') and f.startswith(file_pattern)]
combined_csv = pd.concat(
[pd.read_csv(f) for f in all_files],
ignore_index=True
)
combined_csv.to_csv(output_file, index=False)
print(f"合并完成! 总行数: {len(combined_csv)}")
```
#### 使用示例
```python
# 按行拆分(每500行一个文件)
split_csv("large_data.csv", "split_files", chunk_size=500)
# 按列拆分(根据"department"列的值)
split_csv("employees.csv", "dept_files", split_column="department")
# 合并文件
merge_csv("split_files", "combined_data.csv", file_pattern="large_data_part")
```
### 注意事项
1. **内存管理**:处理超大文件时建议使用`chunksize`参数分块读取[^3]
2. **列一致性**:合并文件需确保所有CSV具有相同的列结构
3. **文件编码**:处理非UTF-8编码文件需指定`encoding`参数
4. **性能优化**:使用`pd.concat()`比逐行追加效率更高[^1]
### 典型应用场景
1. 大数据集分批处理
2. 按业务维度分割数据(如地区/时间)
3. 分布式处理前的数据准备
4. 定期数据归档[^4]
阅读全文
相关推荐




















