京公网安备 11010802034615号
经营许可证编号:京B2-20210330
作者:小伍哥
来源:AI入门学习
在数据处理过程中,经常会遇到多个表进行拼接合并的需求,在Pandas中有多个拼接合并的方法,每种方法都有自己擅长的拼接方式,本文对pd.concat()进行详细讲解,希望对你有帮助。pd.concat()函数可以沿着指定的轴将多个dataframe或者series拼接到一起,这一点和另一个常用的pd.merge()函数不同,pd.merge()解决数据库样式的左右拼接,不能解决上下拼接。
pd.concat( objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True)
#构建需要的数据表
import pandas as pd
df1 = pd.DataFrame({'A':['A{}'.format(i) for i in range(0,4)], 'B':['B{}'.format(i) for i in range(0,4)], 'C':['C{}'.format(i) for i in range(0,4)]
})
df2 = pd.DataFrame({'A':['A{}'.format(i) for i in range(4,8)], 'B':['B{}'.format(i) for i in range(4,8)], 'C':['C{}'.format(i) for i in range(4,8)]
})
df3 = pd.DataFrame({'A':['A{}'.format(i) for i in range(8,12)], 'B':['B{}'.format(i) for i in range(8,12)], 'C':['C{}'.format(i) for i in range(8,12)]
})
现将表构成list,然后在作为concat的输入
frames = [df1, df2, df3] result = pd.concat(frames) A B C 0 A0 B0 C0 1 A1 B1 C1 2 A2 B2 C2 3 A3 B3 C3 0 A4 B4 C4 1 A5 B5 C5 2 A6 B6 C6 3 A7 B7 C7 0 A8 B8 C8 1 A9 B9 C9 2 A10 B10 C10 3 A11 B11 C11
传入也可以是字典
frames = {'df1':df1, 'df2':df2,'df3':df3} result = pd.concat(frames) A B C df1 0 A0 B0 C0 1 A1 B1 C1 2 A2 B2 C2 3 A3 B3 C3 df2 0 A4 B4 C4 1 A5 B5 C5 2 A6 B6 C6 3 A7 B7 C7 df3 0 A8 B8 C8 1 A9 B9 C9 2 A10 B10 C10 3 A11 B11 C11 三、横向拼接
当axis = 1的时候,concat就是行对齐,然后将不同列名称的两张表合并
#再构建一个表
df4 = pd.DataFrame({'C':['C{}'.format(i) for i in range(3,9)], 'E':['E{}'.format(i) for i in range(3,9)], 'F':['F{}'.format(i) for i in range(3,9)]
})
pd.concat([df1,df4], axis=1)
A B C C E F 0 A0 B0 C0 C3 E3 F3 1 A1 B1 C1 C4 E4 F4 2 A2 B2 C2 C5 E5 F5 3 A3 B3 C3 C6 E6 F6 4 NaN NaN NaN C7 E7 F7 5 NaN NaN NaN C8 E8 F8
加上join参数的属性,如果为'inner'得到的是两表的交集,如果是outer,得到的是两表的并集。
# join='inner' 取交集 pd.concat([df1, df4], axis=1, join='inner') A B C C E F 0 A0 B0 C0 C3 E3 F3 1 A1 B1 C1 C4 E4 F4 2 A2 B2 C2 C5 E5 F5 3 A3 B3 C3 C6 E6 F6 # join='outer' 和 默认值相同 pd.concat([df1, df4], axis=1, join='outer') A B C C E F 0 A0 B0 C0 C3 E3 F3 1 A1 B1 C1 C4 E4 F4 2 A2 B2 C2 C5 E5 F5 3 A3 B3 C3 C6 E6 F6 4 NaN NaN NaN C7 E7 F7 5 NaN NaN NaN C8 E8 F8 四、对比append方法
append是series和dataframe的方法,使用它就是默认沿着列进行凭借(axis = 0,列对齐)
df1.append(df2) A B C 0 A0 B0 C0 1 A1 B1 C1 2 A2 B2 C2 3 A3 B3 C3 0 A4 B4 C4 1 A5 B5 C5 2 A6 B6 C6 3 A7 B7 C7 五、忽略index
如果两个表的index都没有实际含义,使用ignore_index参数,置true,合并的两个表就睡根据列字段对齐,然后合并。最后再重新整理一个新的index。
pd.concat([df1, df4], axis=1, ignore_index=True) 0 1 2 3 4 5 0 A0 B0 C0 C3 E3 F3 1 A1 B1 C1 C4 E4 F4 2 A2 B2 C2 C5 E5 F5 3 A3 B3 C3 C6 E6 F6 4 NaN NaN NaN C7 E7 F7 5 NaN NaN NaN C8 E8 F8 六、增加区分组键
前面提到的keys参数可以用来给合并后的表增加key来区分不同的表数据来源
pd.concat([df1,df2,df3], keys=['x', 'y', 'z']) A B C x 0 A0 B0 C0 1 A1 B1 C1 2 A2 B2 C2 3 A3 B3 C3 y 0 A4 B4 C4 1 A5 B5 C5 2 A6 B6 C6 3 A7 B7 C7 z 0 A8 B8 C8 1 A9 B9 C9 2 A10 B10 C10 3 A11 B11 C11
frames = {'df1':df1, 'df2':df2,'df3':df3} result = pd.concat(frames) A B C df1 0 A0 B0 C0 1 A1 B1 C1 2 A2 B2 C2 3 A3 B3 C3 df2 0 A4 B4 C4 1 A5 B5 C5 2 A6 B6 C6 3 A7 B7 C7 df3 0 A8 B8 C8 1 A9 B9 C9 2 A10 B10 C10 3 A11 B11 C11
七、加入新的行
append方法可以将 series 和 字典就够的数据作为dataframe的新一行插入。
s2 = pd.Series(['X0', 'X1', 'X2', 'X3'], index=['A', 'B', 'C', 'D'])
df1.append(s2, ignore_index=True)
A B C D 0 A0 B0 C0 NaN 1 A1 B1 C1 NaN 2 A2 B2 C2 NaN 3 A3 B3 C3 NaN 4 X0 X1 X2 X3
如果遇到两张表的列字段本来就不一样,但又想将两个表合并,其中无效的值用nan来表示。那么可以使用ignore_index来实现。
dicts = [{'A': 1, 'B': 2, 'C': 3, 'X': 4}, {'A': 5, 'B': 6, 'C': 7, 'Y': 8}] df1.append(dicts, ignore_index=True) A B C X Y 0 A0 B0 C0 NaN NaN 1 A1 B1 C1 NaN NaN 2 A2 B2 C2 NaN NaN 3 A3 B3 C3 NaN NaN 4 1 2 3 4.0 NaN 5 5 6 7 NaN 8.0
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在用户行为分析实践中,很多从业者会陷入一个核心误区:过度关注“当前数据的分析结果”,却忽视了结果的“泛化能力”——即分析 ...
2026-03-13在数字经济时代,用户的每一次点击、浏览、停留、转化,都在传递着真实的需求信号。用户行为分析,本质上是通过收集、整理、挖掘 ...
2026-03-13在金融、零售、互联网等数据密集型行业,量化策略已成为企业挖掘商业价值、提升决策效率、控制经营风险的核心工具。而CDA(Certi ...
2026-03-13在机器学习建模体系中,随机森林作为集成学习的经典算法,凭借高精度、抗过拟合、适配多场景、可解释性强的核心优势,成为分类、 ...
2026-03-12在机器学习建模过程中,“哪些特征对预测结果影响最大?”“如何筛选核心特征、剔除冗余信息?”是从业者最常面临的核心问题。随 ...
2026-03-12在数字化转型深度渗透的今天,企业管理已从“经验驱动”全面转向“数据驱动”,数据思维成为企业高质量发展的核心竞争力,而CDA ...
2026-03-12在数字经济飞速发展的今天,数据分析已从“辅助工具”升级为“核心竞争力”,渗透到商业、科技、民生、金融等各个领域。无论是全 ...
2026-03-11上市公司财务报表是反映企业经营状况、盈利能力、偿债能力的核心数据载体,是投资者决策、研究者分析、从业者复盘的重要依据。16 ...
2026-03-11数字化浪潮下,数据已成为企业生存发展的核心资产,而数据思维,正是CDA(Certified Data Analyst)数据分析师解锁数据价值、赋 ...
2026-03-11线性回归是数据分析中最常用的预测与关联分析方法,广泛应用于销售额预测、风险评估、趋势分析等场景(如前文销售额预测中的多元 ...
2026-03-10在SQL Server安装与配置的实操中,“服务名无效”是最令初学者头疼的高频问题之一。无论是在命令行执行net start启动服务、通过S ...
2026-03-10在数据驱动业务的当下,CDA(Certified Data Analyst)数据分析师的核心价值,不仅在于解读数据,更在于搭建一套科学、可落地的 ...
2026-03-10在企业经营决策中,销售额预测是核心环节之一——无论是库存备货、营销预算制定、产能规划,还是战略布局,都需要基于精准的销售 ...
2026-03-09金融数据分析的核心价值,是通过挖掘数据规律、识别风险、捕捉机会,为投资决策、风险控制、业务优化提供精准支撑——而这一切的 ...
2026-03-09在数据驱动决策的时代,CDA(Certified Data Analyst)数据分析师的核心工作,是通过数据解读业务、支撑决策,而指标与指标体系 ...
2026-03-09在数据处理的全流程中,数据呈现与数据分析是两个紧密关联却截然不同的核心环节。无论是科研数据整理、企业业务复盘,还是日常数 ...
2026-03-06在数据分析、数据预处理场景中,dat文件是一种常见的二进制或文本格式数据文件,广泛应用于科研数据、工程数据、传感器数据等领 ...
2026-03-06在数据驱动决策的时代,CDA(Certified Data Analyst)数据分析师的核心价值,早已超越单纯的数据清洗与统计分析,而是通过数据 ...
2026-03-06在教学管理、培训数据统计、课程体系搭建等场景中,经常需要对课时数据进行排序并实现累加计算——比如,按课程章节排序,累加各 ...
2026-03-05在数据分析场景中,环比是衡量数据短期波动的核心指标——它通过对比“当前周期与上一个相邻周期”的数据,直观反映指标的月度、 ...
2026-03-05