
本文旨在介绍如何使用 Pandas 库,基于一个 DataFrame 列中的部分文本匹配另一个 DataFrame 的列,从而实现高效的数据合并。通过提取关键信息并进行连接,最终得到包含完整信息的目标 DataFrame。本文将提供详细的代码示例和步骤说明,帮助读者掌握这种常用的数据处理技巧。
在数据分析和处理中,经常会遇到需要将两个 DataFrame 基于某些关联字段进行合并的情况。但有时,关联字段并非完全一致,而是存在部分匹配的关系。例如,一个 DataFrame 的某一列包含完整的 ID 信息,而另一个 DataFrame 的某一列只包含 ID 的一部分,这时就需要采用一些技巧来实现数据的合并。
以下将通过一个具体的例子,演示如何使用 Pandas 库来实现这种基于部分匹配的 DataFrame 合并。
示例数据
假设我们有两个 DataFrame,df1 和 df2。
df1 包含主机名(Hostname)、区域(Region)和型号(Model)信息:
import pandas as pd
data1 = {'Hostname': ['ServerABC101', 'ServerABC102', 'ServerDDC103', 'ServerDDC609', 'ServerDDC103', 'ServerDDC609'],
'Region': ['US', 'US', 'PAC', 'Emea', 'PAC', 'Emea'],
'Model': ['Cisco', 'Cisco', 'Intel', 'Intel', 'Intel', 'Intel']}
df1 = pd.DataFrame(data1)
print("DataFrame df1:\n", df1)df2 包含站点(Site)、城市(City)和州(State)信息:
data2 = {'Site': ['ABC', 'DDC'],
'City': ['NYC', 'DAL'],
'State': ['NY', 'TX']}
df2 = pd.DataFrame(data2)
print("\nDataFrame df2:\n", df2)我们的目标是将 df1 和 df2 基于 df1['Hostname'] 中的部分文本(站点代码)与 df2['Site'] 进行匹配,最终得到一个包含所有信息的 DataFrame。
解决方案
提取站点代码:
首先,我们需要从 df1['Hostname'] 中提取出站点代码。假设站点代码是由 "Server" 后面的三个大写字母组成,我们可以使用正则表达式来实现:
df1['Site'] = df1['Hostname'].str.extract(r"Server([A-Z]{3})")
print("\nDataFrame df1 with extracted Site:\n", df1)str.extract(r"Server([A-Z]{3})") 的作用是:
合并 DataFrame:
现在,我们已经提取出了 df1 中的站点代码,可以基于 Site 列将 df1 和 df2 进行合并。使用 pd.merge() 函数,并将 how 参数设置为 'left',以保留 df1 中的所有行:
df1 = pd.merge(df1, df2, on='Site', how='left')
print("\nFinal Merged DataFrame:\n", df1)pd.merge(df1, df2, on='Site', how='left') 的作用是:
完整代码
import pandas as pd
# 创建 DataFrame df1
data1 = {'Hostname': ['ServerABC101', 'ServerABC102', 'ServerDDC103', 'ServerDDC609', 'ServerDDC103', 'ServerDDC609'],
'Region': ['US', 'US', 'PAC', 'Emea', 'PAC', 'Emea'],
'Model': ['Cisco', 'Cisco', 'Intel', 'Intel', 'Intel', 'Intel']}
df1 = pd.DataFrame(data1)
# 创建 DataFrame df2
data2 = {'Site': ['ABC', 'DDC'],
'City': ['NYC', 'DAL'],
'State': ['NY', 'TX']}
df2 = pd.DataFrame(data2)
# 提取站点代码
df1['Site'] = df1['Hostname'].str.extract(r"Server([A-Z]{3})")
# 合并 DataFrame
df1 = pd.merge(df1, df2, on='Site', how='left')
# 打印结果
print(df1)注意事项
总结
本文介绍了如何使用 Pandas 库,基于部分匹配的文本数据合并 DataFrame。通过提取关键信息和灵活运用 pd.merge() 函数,可以高效地完成数据的整合。这种方法在实际数据处理中非常实用,可以解决许多复杂的数据合并问题。掌握这些技巧,能够显著提升数据分析的效率。
以上就是基于部分匹配的 Pandas DataFrame 合并教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号