python轻松办公将100个Excel中符合条件的数据汇总到1个Excel里

  • Post category:Python

为了完成这个任务,我们需要使用到Python语言的pandas库和openpyxl库。pandas库可以处理数据,而openpyxl库则可以用来读取和写入Excel文件。下面是完整的实例教程:

第一步:安装库

我们需要安装pandas和openpyxl这两个库。使用以下命令来安装:

pip install pandas openpyxl

第二步:导入库

导入我们需要的库:

import pandas as pd
from openpyxl import Workbook, load_workbook

第三步:读取Excel文件

假设我们有100个Excel文件,每个文件中都有一个名为“Sheet1”的工作表,里面有三列:Name(姓名)、Gender(性别)和Age(年龄)。

我们可以使用pandas库中的read_excel()函数来读取所有100个Excel文件中的数据,并将它们存储在一个名为data的pandas DataFrame对象中。代码如下:

data = pd.DataFrame()

for i in range(1, 101):
    filename = f"file{i}.xlsx"
    df = pd.read_excel(filename, sheet_name="Sheet1")
    data = pd.concat([data, df])

在这里,我们使用一个for循环来遍历所有100个Excel文件,读取所有的“Sheet1”工作表,并将它们存储在一个名为data的pandas DataFrame对象中。注意,我们使用了pd.concat()方法来将每个Excel文件中的数据添加到data对象中。

第四步:筛选数据

接下来,我们需要筛选符合条件的数据。例如,我们只想要所有年龄大于等于18岁的人的数据,我们可以使用以下代码:

condition = (data["Age"] >= 18)
filtered_data = data[condition]

在这里,我们使用了一个条件表达式(condition),这个表达式将会返回一个布尔值。我们将条件表达式赋值给一个名为condition的变量。使用这个变量作为data DataFrame的索引,我们可以得到所有符合条件的数据,并将它们存储在一个名为filtered_data的pandas DataFrame对象中。

第五步:将筛选后的数据写入Excel文件

现在,我们已经得到了所有符合条件的数据,我们可以使用openpyxl库将这些数据写入一个新的Excel文件中。

在这里,我们需要使用到以下代码:

wb = Workbook()
ws = wb.active

rows = filtered_data.values.tolist()

for row in rows:
    ws.append(row)

wb.save("filtered_data.xlsx")

在这里,我们创建了一个名为wb的新Excel工作簿,并创建一个名为ws的工作表对象。我们使用filtered_data.values.tolist()方法将filtered_data DataFrame对象转换为一个二维列表,并将其命名为rows。

接着,我们使用for循环来遍历rows中的每一行,并在ws工作表中追加每一行的数据。最后,我们使用wb.save()方法将工作簿保存为一个新的Excel文件(例如,“filtered_data.xlsx”)。

示例1:筛选特定的姓名

有时候,我们可能只想要特定的姓名的数据。为了做到这一点,我们需要修改条件表达式和筛选代码。例如,我们想要所有姓名为“Tom”的数据,我们可以使用以下代码:

condition = (data["Name"] == "Tom")
filtered_data = data[condition]

在这里,我们将条件表达式修改为(data[“Name”] == “Tom”)。这个条件表达式将会返回一个布尔值(为True的一行代表这个人的姓名是Tom),我们将条件表达式赋值给一个名为condition的变量。使用这个变量作为data DataFrame的索引,我们可以得到所有姓名为“Tom”的数据,并将它们存储在一个名为filtered_data的pandas DataFrame对象中。

示例2:筛选特定的性别和年龄

有时候,我们也可能需要筛选特定的性别和年龄。例如,我们想要所有性别为男性,且年龄大于等于18岁的数据,我们可以使用以下代码:

condition = ((data["Gender"] == "Male") & (data["Age"] >= 18))
filtered_data = data[condition]

在这里,我们将条件表达式修改为((data[“Gender”] == “Male”) & (data[“Age”] >= 18))。这个条件表达式将会返回一个布尔值(为True的一行代表这个人是男性,且年龄大于等于18岁),我们将条件表达式赋值给一个名为condition的变量。使用这个变量作为data DataFrame的索引,我们可以得到所有符合条件的数据,并将它们存储在一个名为filtered_data的pandas DataFrame对象中。

注意:示例中的代码仅供参考,实际应用中可能需要根据具体情况进行修改。