使用pandas库来处理两个Excel文件,并根据“货号”列中的数字部分合并这两个文件的数据。以下是对这段代码的详细介绍:
导入必要的库:
import pandas as pd: 导入pandas库,并给它起一个别名pd。读取Excel文件:
file_path1和file_path2,分别指向两个Excel文件。pd.read_excel()函数读取这两个文件,并将数据加载到两个数据框df1和df2中。定义提取数字的函数:
extract_numbers的函数,它接受一个字符串s作为输入。filter()函数和str.isdigit方法来提取字符串中的所有数字,并使用''.join()将它们连接成一个新的字符串。处理“货号”列:
df1和df2中的“货号”列转换为字符串类型(以防万一它们原本是数字或其他类型)。apply()方法和之前定义的extract_numbers函数来处理这两个数据框的“货号”列,提取其中的数字部分。合并数据框:
pd.merge()函数根据处理后的“货号”列合并df1和df2。on='货号'指定了合并的键。how='right'表示进行右连接合并,即保留df2中的所有行,并根据匹配的“货号”将df1中的数据添加到合并后的数据框中。如果需要保留df1中的所有行,则可以使用how='left'。查看和保存合并后的数据:
print(merged_df.head())打印合并后数据框的前几行,以便查看合并结果。merged_df.to_excel()方法将合并后的数据框保存到一个新的Excel文件中。index=False参数表示不将索引保存到Excel文件中。- import pandas as pd
-
- # 读取Excel文件
- file_path1 = r'C:\Users\admin\Desktop\施华洛世奇531.xlsx'
- file_path2 = r'C:\Users\admin\Desktop\s519.xlsx'
- df1 = pd.read_excel(file_path1)
- df2 = pd.read_excel(file_path2)
-
- # 定义一个函数来提取字符串中的数字部分
- def extract_numbers(s):
- return ''.join(filter(str.isdigit, s))
-
- # 应用这个函数到两个数据框的“货号”列,并创建新的列来保存提取的数字
- df1['货号'] = df1['货号'].astype(str).apply(extract_numbers)
- df2['货号'] = df2['货号'].astype(str).apply(extract_numbers)
-
- # 基于新的数字货号列合并df1和df2
- merged_df = pd.merge(df1, df2, on='货号', how='right') # 或者使用 how='left' 根据需要调整
-
- # 查看合并后的数据框
- print(merged_df.head())
-
- # 保存合并后的数据到新的Excel文件
- output_file_path = r'C:\Users\admin\Desktop\s531.xlsx'
- merged_df.to_excel(output_file_path, index=False) # 不保存索引到Excel文件中
- print("合并完成并保存到Excel文件。")