作者:小伍哥
来源: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
在数字化浪潮中,数据驱动决策已成为企业发展的核心竞争力,数据分析人才的需求持续飙升。世界经济论坛发布的《未来就业报告》, ...
2025-03-28你有没有遇到过这样的情况?流量进来了,转化率却不高,辛辛苦苦拉来的用户,最后大部分都悄无声息地离开了,这时候漏斗分析就非 ...
2025-03-27TensorFlow Datasets(TFDS)是一个用于下载、管理和预处理机器学习数据集的库。它提供了易于使用的API,允许用户从现有集合中 ...
2025-03-26"不谋全局者,不足谋一域。"在数据驱动的商业时代,战略级数据分析能力已成为职场核心竞争力。《CDA二级教材:商业策略数据分析 ...
2025-03-26当你在某宝刷到【猜你喜欢】时,当抖音精准推来你的梦中情猫时,当美团外卖弹窗刚好是你想吃的火锅店…… 恭喜你,你正在被用户 ...
2025-03-26当面试官问起随机森林时,他到底在考察什么? ""请解释随机森林的原理""——这是数据分析岗位面试中的经典问题。但你可能不知道 ...
2025-03-25在数字化浪潮席卷的当下,数据俨然成为企业的命脉,贯穿于业务运作的各个环节。从线上到线下,从平台的交易数据,到门店的运营 ...
2025-03-25在互联网和移动应用领域,DAU(日活跃用户数)是一个耳熟能详的指标。无论是产品经理、运营,还是数据分析师,DAU都是衡量产品 ...
2025-03-24ABtest做的好,产品优化效果差不了!可见ABtest在评估优化策略的效果方面地位还是很高的,那么如何在业务中应用ABtest? 结合企业 ...
2025-03-21在企业数据分析中,指标体系是至关重要的工具。不仅帮助企业统一数据标准、提升数据质量,还能为业务决策提供有力支持。本文将围 ...
2025-03-20解锁数据分析师高薪密码,CDA 脱产就业班助你逆袭! 在数字化浪潮中,数据驱动决策已成为企业发展的核心竞争力,数据分析人才的 ...
2025-03-19在 MySQL 数据库中,查询一张表但是不包含某个字段可以通过以下两种方法实现:使用 SELECT 子句以明确指定想要的字段,或者使 ...
2025-03-17在当今数字化时代,数据成为企业发展的关键驱动力,而用户画像作为数据分析的重要成果,改变了企业理解用户、开展业务的方式。无 ...
2025-03-172025年是智能体(AI Agent)的元年,大模型和智能体的发展比较迅猛。感觉年初的deepseek刚火没多久,这几天Manus又成为媒体头条 ...
2025-03-14以下的文章内容来源于柯家媛老师的专栏,如果您想阅读专栏《小白必备的数据思维课》,点击下方链接 https://edu.cda.cn/goods/sh ...
2025-03-13以下的文章内容来源于刘静老师的专栏,如果您想阅读专栏《10大业务分析模型突破业务瓶颈》,点击下方链接 https://edu.cda.cn/go ...
2025-03-12以下的文章内容来源于柯家媛老师的专栏,如果您想阅读专栏《小白必备的数据思维课》,点击下方链接 https://edu.cda.cn/goods/sh ...
2025-03-11随着数字化转型的加速,企业积累了海量数据,如何从这些数据中挖掘有价值的信息,成为企业提升竞争力的关键。CDA认证考试体系应 ...
2025-03-10推荐学习书籍 《CDA一级教材》在线电子版正式上线CDA网校,为你提供系统、实用、前沿的学习资源,助你轻松迈入数据分析的大门! ...
2025-03-07在数据驱动决策的时代,掌握多样的数据分析方法,就如同拥有了开启宝藏的多把钥匙,能帮助我们从海量数据中挖掘出关键信息,本 ...
2025-03-06