python按列索引提取文件夹内所有excel指定列汇总(示例代码)

  • Post category:Python

下面是一个示例Python程序,可以按照指定的列索引提取文件夹内所有Excel文件的指定列,并将数据汇总合并到一个新文件中。

1. 准备工作

首先,我们需要在Python中使用pandas库来处理Excel文件。如果你还没有安装pandas库,可以使用下面的命令来安装:

pip install pandas

然后,我们需要创建一个包含Excel文件的文件夹,并将这个文件夹的路径记录下来。

假设这个文件夹的路径为:C:\Users\UserName\Documents\ExcelFiles

2. 代码实现

import os
import pandas as pd

# 设置文件夹路径
folder_path = "C:\\Users\\UserName\\Documents\\ExcelFiles"

# 设置要提取的列的索引,假设要提取第2列和第4列
column_indices = [2, 4]

# 创建一个空的DataFrame
merged_df = pd.DataFrame()

# 遍历文件夹中所有的Excel文件
for filename in os.listdir(folder_path):
    if filename.endswith(".xlsx") or filename.endswith(".xls"):
        # 使用pandas读取Excel文件的数据
        filepath = os.path.join(folder_path, filename)
        df = pd.read_excel(filepath)

        # 按照列索引提取指定列的数据
        selected_columns = df.iloc[:, column_indices]

        # 将提取出来的数据添加到合并的DataFrame中
        merged_df = pd.concat([merged_df, selected_columns])

# 将合并的DataFrame保存到新的Excel文件中
output_filepath = os.path.join(folder_path, "Merged.xlsx")
merged_df.to_excel(output_filepath, index=False)

这个程序的功能是先读取文件夹中所有的Excel文件,并按照指定的列索引提取指定列的数据,最终将所有Excel文件中提取出来的数据汇总到一个新的Excel文件中。

3. 示例说明

示例一

假设文件夹C:\Users\UserName\Documents\ExcelFiles中包含以下两个Excel文件:

  • file1.xlsx
  • file2.xlsx

每个Excel文件中包含以下数据:

file1.xlsx

|  A  |  B  |  C  |  D  |  E  |  F  |
|-----|-----|-----|-----|-----|-----|
|  1  |  2  |  3  |  4  |  5  |  6  |
|  7  |  8  |  9  |  10 |  11 |  12 |


file2.xlsx

|  A  |  B  |  C  |  D  |  E  |  F  |
|-----|-----|-----|-----|-----|-----|
|  13 |  14 |  15 |  16 |  17 |  18 |
|  19 |  20 |  21 |  22 |  23 |  24 |

如果我们要提取第2列和第4列的数据,并将两个文件中的数据汇总到一个新文件中,可以使用以下的代码:

import os
import pandas as pd

folder_path = "C:\\Users\\UserName\\Documents\\ExcelFiles"
column_indices = [2, 4]

merged_df = pd.DataFrame()

for filename in os.listdir(folder_path):
    if filename.endswith(".xlsx") or filename.endswith(".xls"):
        filepath = os.path.join(folder_path, filename)
        df = pd.read_excel(filepath)
        selected_columns = df.iloc[:, column_indices]
        merged_df = pd.concat([merged_df, selected_columns])

output_filepath = os.path.join(folder_path, "Merged.xlsx")
merged_df.to_excel(output_filepath, index=False)

运行结果是生成一个新的Excel文件Merged.xlsx,其内容为:

Merged.xlsx

|  C  |  E  |
|-----|-----|
|  3  |  5  |
|  9  |  11 |
|  15 |  17 |
|  21 |  23 |

示例二

现在假设文件夹C:\Users\UserName\Documents\ExcelFiles中包含以下三个Excel文件:

  • file1.xlsx
  • file2.xlsx
  • file3.xls

每个Excel文件中包含以下数据:

file1.xlsx

|  A  |  B   |  C  |  D  |  E  |  F  |
|-----|-----|-----|-----|-----|-----|
|  1  | abc |  3  | efg |  5  | hij |
|  7  | klm |  9  | nop |  11 | qrs |


file2.xlsx

|  A   |  B  |  C   |   D   | EFG |
|-----|-----|-----|------|-----|
|  13 | uvw |  15 | xyz  | 111 |
|  19 | ijk |  21 | rst  | 222 |


file3.xls

|  A  |  B  | CDE |
|-----|-----|-----|
|  31 |  32 | abc |
|  33 |  34 | def |

如果我们要提取第2列和第4列的数据,并将三个文件中的数据汇总到一个新文件中,可以使用以下的代码:

import os
import pandas as pd

folder_path = "C:\\Users\\UserName\\Documents\\ExcelFiles"
column_indices = [1, 3]

merged_df = pd.DataFrame()

for filename in os.listdir(folder_path):
    if filename.endswith(".xlsx") or filename.endswith(".xls"):
        filepath = os.path.join(folder_path, filename)
        df = pd.read_excel(filepath)
        selected_columns = df.iloc[:, column_indices]
        merged_df = pd.concat([merged_df, selected_columns])

output_filepath = os.path.join(folder_path, "Merged.xlsx")
merged_df.to_excel(output_filepath, index=False)

运行结果是生成一个新的Excel文件Merged.xlsx,其内容为:

Merged.xlsx

|   B   |   D   |
|-------|-------|
|  abc  |  efg  |
|  klm  |  nop  |
|  uvw  |  xyz  |
|  ijk  |  rst  |
|  32   |  abc  |
|  34   |  def  |

注意,这个程序可以同时处理.xlsx和.xls后缀的Excel文件。