使用pycharm 合并一个指定文件夹下的多个excel 到一个excel的不同sheet页,且其中一个excel有近60万行数据
时间: 2024-05-05 17:15:10 浏览: 197
以下是使用Python和pandas库来合并一个指定文件夹下的多个excel到一个excel的不同sheet页的示例代码:
```python
import os
import pandas as pd
# 设置文件夹路径和目标文件名
folder_path = "/path/to/folder"
output_file = "merged.xlsx"
# 获取文件夹中所有excel文件名
files = [f for f in os.listdir(folder_path) if f.endswith('.xlsx')]
# 创建一个ExcelWriter对象,用于写入合并后的数据
writer = pd.ExcelWriter(output_file, engine='xlsxwriter')
# 遍历所有excel文件并合并到不同的sheet页中
for file in files:
# 读取excel文件中的数据
data = pd.read_excel(os.path.join(folder_path, file))
# 将数据写入到ExcelWriter对象中的不同sheet页中
data.to_excel(writer, sheet_name=os.path.splitext(file)[0], index=False)
# 保存ExcelWriter对象中的数据到文件
writer.save()
```
上述代码中,我们首先设置了文件夹路径和目标文件名。然后,通过`os.listdir()`函数获取文件夹中所有以`.xlsx`结尾的文件名,并遍历这些文件。在遍历过程中,我们使用`pd.read_excel()`函数读取每个excel文件中的数据,并使用`pd.ExcelWriter()`函数创建一个ExcelWriter对象。然后,使用`to_excel()`函数将每个excel文件中的数据写入到ExcelWriter对象中的不同sheet页中,使用`os.path.splitext()`函数获取文件名作为sheet页名称。最后,我们使用`writer.save()`函数将ExcelWriter对象中的数据保存到目标文件中。
需要注意的是,如果其中一个excel文件有近60万行数据,可能会导致内存不足或者执行时间过长。可以考虑使用`pd.read_excel()`函数的`chunksize`参数来逐块读取数据,并使用`pd.concat()`函数将这些数据合并起来。示例代码如下:
```python
import os
import pandas as pd
# 设置文件夹路径和目标文件名
folder_path = "/path/to/folder"
output_file = "merged.xlsx"
# 获取文件夹中所有excel文件名
files = [f for f in os.listdir(folder_path) if f.endswith('.xlsx')]
# 创建一个ExcelWriter对象,用于写入合并后的数据
writer = pd.ExcelWriter(output_file, engine='xlsxwriter')
# 遍历所有excel文件并合并到不同的sheet页中
for file in files:
# 逐块读取excel文件中的数据
for chunk in pd.read_excel(os.path.join(folder_path, file), chunksize=10000):
# 将数据写入到ExcelWriter对象中的不同sheet页中
chunk.to_excel(writer, sheet_name=os.path.splitext(file)[0], index=False)
# 保存ExcelWriter对象中的数据到文件
writer.save()
```
上述代码中,我们使用`pd.read_excel()`函数的`chunksize`参数将每个excel文件逐块读取。这里我们设置每次读取10000行数据,可以根据实际情况进行调整。然后,我们使用`pd.concat()`函数将这些数据逐块合并起来,并使用`to_excel()`函数将合并后的数据写入到ExcelWriter对象中的不同sheet页中。最后,我们使用`writer.save()`函数将ExcelWriter对象中的数据保存到目标文件中。
阅读全文