在线计算网 · 发布于 2025-03-23 09:32:03 · 已经有8人使用
在数据处理的日常工作中,合并DataFrame行是一项常见且重要的任务。本文将详细介绍如何基于多列和子字符串高效地合并DataFrame行,帮助大家提升数据处理效率。
在使用Pandas处理数据时,我们常常需要根据多个列的条件以及子字符串来合并行。传统的合并方法可能效率低下,尤其是当数据量较大时。如何高效地完成这一任务,成为许多数据分析师的痛点。
merge
函数merge
函数是Pandas中常用的合并工具,支持基于多列的合并。
import pandas as pd
df1 = pd.DataFrame({'A': ['foo', 'bar', 'baz'], 'B': [1, 2, 3], 'C': [4, 5, 6]})
df2 = pd.DataFrame({'A': ['foo', 'bar', 'baz'], 'B': [1, 2, 3], 'D': [7, 8, 9]})
result = pd.merge(df1, df2, on=['A', 'B'])
print(result)
当需要基于子字符串合并时,可以先创建辅助列,再进行合并。
import pandas as pd
df1 = pd.DataFrame({'A': ['foo1', 'bar2', 'baz3'], 'B': [1, 2, 3]})
df2 = pd.DataFrame({'A': ['foo', 'bar', 'baz'], 'C': [4, 5, 6]})
df1['A_sub'] = df1['A'].str[:3]
result = pd.merge(df1, df2, left_on='A_sub', right_on='A')
print(result)
尽量避免使用循环进行行合并,利用Pandas的内置函数可以大幅提升效率。
apply
函数对于复杂的合并逻辑,可以使用apply
函数进行向量化操作。
result = df1.apply(lambda row: df2[(df2['A'].str.contains(row['A'])) & (df2['B'] == row['B'])], axis=1)
假设我们有两张表,一张是用户信息表,另一张是订单表,我们需要根据用户名和订单日期的子字符串合并数据。
import pandas as pd
user_df = pd.DataFrame({'username': ['user1', 'user2', 'user3'], 'age': [25, 30, 35]})
order_df = pd.DataFrame({'username': ['user1_2021', 'user2_2022', 'user3_2021'], 'order_date': ['2021-01-01', '2022-01-01', '2021-02-01']})
order_df['username_sub'] = order_df['username'].str.split('_').str[0]
result = pd.merge(user_df, order_df, left_on='username', right_on='username_sub')
print(result)
通过本文的介绍,希望大家能够掌握基于多列和子字符串高效合并DataFrame行的技巧,提升数据处理效率。在实际工作中,灵活运用这些方法,可以大大简化数据处理流程。
Pandas官方文档
数据处理相关书籍
如果你在数据处理过程中遇到任何问题,欢迎在评论区留言交流!
1479次Python Web开发教程:掌握表单字段类型,提升编程实战能力
1437次精影RX 5500 XT 8G电源推荐:如何选择合适的瓦数
1390次JMeter性能测试教程:详解HTTP信息头管理器
1201次技嘉GeForce GTX 1660 SUPER MINI ITX OC 6G参数详解:小巧强芯,游戏利器
1169次深入理解Go Web开发:URI与URL的区别与应用
1138次JavaScript函数参数详解:掌握前端编程核心技巧
1020次七彩虹战斧RTX 3060 Ti豪华版LHR显卡参数详解:性能强悍,性价比之王
590359次四川话女声语音合成助手
104990次生辰八字计算器
73208次4x4四阶矩阵行列式计算器
67027次情侣恋爱日期天数计算器
62972次各种金属材料重量在线计算器
54996次分贝在线计算器
51473次任意N次方计算器
49798次经纬度分秒格式在线转换为十进制
49596次卡方检验P值在线计算器
43010次三角函数计算器