本文主要是介绍pandas处理两表合并,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用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文件。")
这篇关于pandas处理两表合并的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!