那我现在是有366个Excel文件,我需要提取出这366个文件的每个文件中对应行的数据,这样提取出来的366条数据存到一个新的文件中,由于我这366个文件中每个都有9045行数据,所以最后我要生成9045个Excel文件,每个文件包含着366条从这366个文件中获取的对应行的数据,我该如何写代码
时间: 2024-03-10 13:46:04 浏览: 10
你可以按照以下步骤编写代码:
1. 首先,使用pandas读取每个文件并提取所需的行。你可以使用`pd.read_excel()`函数读取Excel文件,然后使用`iloc[]`函数选择所需的行。
2. 将提取的数据存储到一个新的DataFrame中。
3. 循环遍历所有文件并重复步骤1和2。
4. 将所有提取的数据保存到一个新的Excel文件中。你可以使用`pd.ExcelWriter()`函数创建一个Excel文件,并使用`to_excel()`方法将DataFrame写入该文件中。
5. 为每个所需的行创建一个新的Excel文件。你可以使用`pd.DataFrame.groupby()`函数按行分组,并将每个分组保存到一个新的Excel文件中。
以下是示例代码:
```python
import pandas as pd
import os
# 设置Excel文件所在目录的路径
excel_dir = '/path/to/excel/files'
# 设置要提取的行的索引
row_indices = [1, 5, 10, 100, 200, 300, 500, 1000, 2000, 5000, 9044]
# 用于存储所有提取的数据的DataFrame
all_data = pd.DataFrame()
# 循环遍历所有文件
for file_name in os.listdir(excel_dir):
# 如果文件名不是Excel文件,则跳过
if not file_name.endswith('.xlsx'):
continue
# 读取Excel文件
file_path = os.path.join(excel_dir, file_name)
df = pd.read_excel(file_path)
# 提取所需的行
selected_rows = df.iloc[row_indices]
# 将提取的数据添加到all_data DataFrame中
all_data = pd.concat([all_data, selected_rows], axis=0)
# 保存所有提取的数据到一个新的Excel文件中
output_file = '/path/to/output/file.xlsx'
writer = pd.ExcelWriter(output_file)
all_data.to_excel(writer, index=False)
writer.save()
# 将所有行分别保存到不同的Excel文件中
for i, row_index in enumerate(row_indices):
row_data = all_data.loc[row_index]
output_file = '/path/to/output/file_{}.xlsx'.format(i)
writer = pd.ExcelWriter(output_file)
row_data.to_frame().to_excel(writer, index=False)
writer.save()
```
这段代码将会按照你提供的索引从每个Excel文件中提取所需的行,并将所有提取的数据存储到一个名为`all_data`的DataFrame中。然后,它将使用`pd.ExcelWriter()`函数创建一个名为`output_file`的新Excel文件,并将`all_data` DataFrame中的所有数据写入该文件中。
接下来,这段代码将使用`pd.DataFrame.groupby()`函数按行分组,并将每个分组保存到不同的Excel文件中。这些文件将会按照所需行的索引的顺序命名,并保存在指定的路径中。