pandas中数据合并的常用方法,pandas 合并数据
Pandas中有五个数据合并功能,即:concat、append、merge、join和combine。本文详细讲解了这五个函数的用法,有需要的可以参考。
00-1010 1.串联2。附录3。合并4。加入5。组合摘要
目录
Concat是pandas中专门用于数据连接和合并的函数。它非常强大,支持垂直合并和水平集成。默认是垂直合并,可以通过参数设置。
pd.concat(
objs : Iterable[NDFrame] Mapping[has hable,NDFrame],
轴=0,
join=outer ,
ignore_index: bool=False,
keys=无,
级别=无,
姓名=无,
verify _ integrity : bool =False,
sort: bool=False,
copy: bool=True,
)- FrameOrSeriesUnion
在函数方法中,每个参数的含义如下:
Objs:用于连接数据,可以是由DataFrame或Series组成的列表。axis=0 :连接。默认值为0,即垂直连接。可选1是水平连接。join=“outer”:merge方法。默认值为inner,即交集。可选outer为union ignore_index:是否保留原始索引keys=None: join关系,使用传递的值作为一级索引levels=None:用于构造多级索引的名称=None:索引的名称verify_integrity:检测索引是否重复,如果为真,重复的索引将报告错误sort:在合并模式下,对列进行排序。copy:抄袭深吗?接下来,我们将演示该函数的功能。
基础连接
在[1]:进口熊猫作为pd
在[2]:中s1=pd。系列([a , b])
在[3]:中s2=pd。系列([c , d])
[4]: s1
[4]:
0 a
1 b
dtype:对象
[5]: s2
[5]:
0摄氏度
一维
dtype:对象
In [6]: pd.concat([s1,s2])
[6]:
0 a
1 b
0摄氏度
一维
dtype:对象
在[7]:中df1=pd。data frame([ a ,1],[b ,2]],
.列=[字母,数字])
在[8]:中df2=pd。data frame([ c ,3],[d ,4]],
.列=[字母,数字])
In [9]: pd.concat([df1,df2])
[9]:
字母编号
0一1
1 b 2
0摄氏度3
1个d 4
横向连接
In [10]: pd.concat([df1,df2],axis=1)
[10]:
字母数字字母数字
0 a 1 c 3
1 b 2 d 4
默认情况下,concat是并集。如果两个数据中的一个没有对应的行或列,则用空值NaN填充。
合并交集
在[11]:中df3=pd。data frame([ c ,3, cat],[d ,4,
dog]],
...: columns=[letter, number, animal])
In [12]: df1
Out[12]:
letter number
0 a 1
1 b 2
In [13]: df3
Out[13]:
letter number animal
0 c 3 cat
1 d 4 dog
In [14]: pd.concat([df1, df3], join=inner)
Out[14]:
letter number
0 a 1
1 b 2
0 c 3
1 d 4
索引重置(不保留原有索引)
In [15]: pd.concat([df1, df3], join=inner, ignore_index=True)
指定索引
In [17]: pd.concat([df1, df3], keys=[df1,df3])
检测重复
如果索引出现重复,则无法通过检测,会报错
In [19]: pd.concat([df1, df3], verify_integrity=True)
合并并集下columns排序
In [21]: pd.concat([df1, df3], sort=True)
DataFrame与Series合并
In [22]: pd.concat([df1, s1])
以上就concat函数方法的一些功能,相比之下,另外一个函数append也可以用于数据追加(纵向合并)
2. append
append主要用于追加数据,是比较简单直接的数据合并方式。
df.append(
在函数方法中,各参数含义如下:
other: 用于追加的数据,可以是DataFrame或Series或组成的列表
ignore_index: 是否保留原有的索引
verify_integrity: 检测索引是否重复,如果为True则有重复索引会报错
sort: 并集合并方式下,对columns排序
接下来,我们就对该函数功能进行演示
基础追加
In [41]: df1.append(df2)
columns重置(不保留原有索引)
In [43]: df1.append([df1,df2,df3], ignore_index=True)
检测重复
如果索引出现重复,则无法通过检测,会报错
In [44]: df1.append([df1,df2], verify_integrity=True)
索引排序
In [46]: df1.append([df1,df2,df3], sort=True)
追加Series
In [49]: s = pd.Series({letter:s1,number:9})
追加字典
这个在爬虫的时候比较好使,每爬取一条数据就合并到DataFrame类似数据中存储起来
In [54]: dic = {letter:s1,number:9}
3. merge
merge函数方法类似SQL里的join,可以是pd.merge或者df.merge,区别就在于后者待合并的数据是
pd.merge(
在函数方法中,关键参数含义如下:
left: 用于连接的左侧数据
right: 用于连接的右侧数据
how: 数据连接方式,默认为 inner,可选outer、left和right
on: 连接关键字段,左右侧数据中需要都存在,否则就用left_on和right_on
left_on: 左侧数据用于连接的关键字段
right_on: 右侧数据用于连接的关键字段
left_index: True表示左侧索引为连接关键字段
right_index: True表示右侧索引为连接关键字段
suffixes: ‘Suffixes’ = (’_x’, ‘_y’),可以自由指定,就是同列名合并后列名显示后缀
indicator: 是否显示合并后某行数据的归属来源
接下来,我们就对该函数功能进行演示
基础合并
In [55]: df1 = pd.DataFrame({key: [foo, bar, bal],
其他连接方式
In [58]: df1.merge(df2, how=left)
指定连接键
可以指定单个连接键,也可以指定多个连接键
In [62]: df1 = pd.DataFrame({lkey1: [foo, bar, bal],
指定索引为键
Out[68]: df1.merge(df2, left_index=True, right_index=True)
设置重复列后缀
In [69]: df1.merge(df2, left_on=lkey1, right_on=rkey1, suffixes=[左,右])
连接指示
新增一列用于显示数据来源
In [70]: df1.merge(df2, left_on=lkey1, right_on=rkey1, suffixes=[左,右], how=outer,
4. join
join就有点想append之于concat,用于数据合并
df.join(
在函数方法中,关键参数含义如下:
other: 用于合并的右侧数据
on: 连接关键字段,左右侧数据中需要都存在,否则就用left_on和right_on
how: 数据连接方式,默认为 inner,可选outer、left和right
lsuffix: 左侧同名列后缀
rsuffix:右侧同名列后缀
接下来,我们就对该函数功能进行演示
In [71]: df = pd.DataFrame({key: [K0, K1, K2, K3, K4, K5],
如果想用key关键字, 则需要key是索引。。。
指定key
In [76]: df.set_index(key).join(other.set_index(key))
指定重复列后缀
In [78]: df.join(other, lsuffix=_左, rsuffix=右)
其他参数就不多做介绍了,和merge基本一样。
5. combine
在数据合并的过程中,我们可能需要对对应位置的值进行一定的计算,pandas提供了combine和combine_first函数方法来进行这方面的合作操作。
df.combine(
比如,数据合并的时候取单元格最小的值
In [79]: df1 = pd.DataFrame({A: [0, 0], B: [4, 4]})
fill_value填充缺失值
In [87]: df1 = pd.DataFrame({A: [0, 0], B: [None, 4]})
overwrite=False保留
In [91]: df1 = pd.DataFrame({A: [0, 0], B: [4, 4]})
另外一个combine_first
df.combine_first(other: DataFrame) -> DataFrame
当df中元素为空采用other里的进行替换,结果为并集合并
In [97]: df1 = pd.DataFrame({A: [None, 0], B: [None, 4]})
总结
以上就本次介绍的关于Pandas数据合并的全部内容,相比之下我们可以发现:
append主要用于纵向追加数据,比较简单直接;
concat功能最强大,不仅可以纵向合并数据还可以横向合并数据而且支持很多其他条件设置;
merge则主要用于横向合并数据,类似SQL里的join连接;
join则比较简单,用于横向合并数据,条件相对苛刻;
combine更像是按照元素进行合并,根据一定的条件(函数规则)来进行数据合并。
到此这篇关于Python必备技巧之Pandas数据合并函数的文章就介绍到这了,更多相关Pandas数据合并内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。