python merge concat,pandas数据合并concat和merge
Pandas提供了许多强大的合并序列和数据帧的功能,通过这些功能可以方便地进行数据分析。以下文章主要介绍python中Dataframe的数据合并merge()和concat()方法的相关信息,有需要的可以参考一下。
00-1010 Merge () 1。常规合并方法方法方法方法方法重要参数合并方法左右外内2。多对一合并3。多对多合并concat()1。相同字段的表头连接2。水平表格合并(行对齐)3。交叉合并汇总。
目录
merge()
1.常规合并
指定一个参照列,以该列为准,合并其他列。
进口熊猫作为pd
df1=pd。DataFrame({id: [001 , 002 , 003],
num1: [120,101,104],
num2: [110,102,121],
num3: [105,120,113]})
df2=pd。DataFrame({id: [001 , 002 , 003],
num4: [80,86,79]})
打印(df1)
打印(=================================)
打印(df2)
打印(=================================)
df_merge=pd.merge(df1,df2,on=id )
打印(df_merge)
方法1
要实现这种合并,还可以按索引进行合并,即基于索引列进行合并。将left_index和right_index都设置为True。
去做吧。(默认情况下,left_index和right_index均为False。left_index表示左表基于左表中数据的索引,right_index表示右表基于右表中数据的索引。)
进口熊猫作为pd
df1=pd。DataFrame({id: [001 , 002 , 003],
num1: [120,101,104],
num2: [110,102,121],
num3: [105,120,113]})
df2=pd。DataFrame({id: [001 , 002 , 003],
num4: [80,86,79]})
打印(df1)
打印(=================================)
打印(df2)
打印(=================================)
df_merge=pd.merge(df1,df2,left_index=True,right_index=True)
打印(df_merge)
>相比方法①,区别在于,如图,方法②合并出的数据中有重复列。
重要参数
pd.merge(right,how=‘inner’, on=None, left_on=None, right_on=None, left_index=False, right_index=False )
参数描述left左表,合并对象,DataFrame或Seriesright右表,合并对象,DataFrame或Serieshow合并方式,可以是left(左合并), right(右合并), outer(外合并), inner(内合并)on基准列 的列名left_on左表基准列列名right_on右表基准列列名left_index左列是否以index为基准,默认False,否right_index右列是否以index为基准,默认False,否
其中,left_index与right_index 不能与 on 同时指定。
合并方式 left right outer inner
准备数据‘
新准备一组数据:
import pandas as pd
inner(默认)
使用来自两个数据集的键的交集
df_merge = pd.merge(df1, df2, on=id)
outer
使用来自两个数据集的键的并集
df_merge = pd.merge(df1, df2, on=id, how="outer")
left
使用来自左数据集的键
df_merge = pd.merge(df1, df2, on=id, how=left)
right
使用来自右数据集的键
df_merge = pd.merge(df1, df2, on=id, how=right)
2.多对一合并
import pandas as pd
如图,df2中有重复id1的数据。
合并
df_merge = pd.merge(df1, df2, on=id)
合并结果如图所示:
依然按照默认的Inner方式,使用来自两个数据集的键的交集。且重复的键的行会在合并结果中体现为多行。
3.多对多合并
如图表1和表2中都存在多行id重复的。
import pandas as pd
df_merge = pd.merge(df1, df2, on=id)
concat()
pd.concat(objs, axis=0, join=‘outer’, ignore_index:bool=False,keys=None,levels=None,names=None, verify_integrity:bool=False,sort:bool=False,copy:bool=True)
参数描述objsSeries,DataFrame或Panel对象的序列或映射axis默认为0,表示列。如果为1则表示行。join默认为"outer",也可以为"inner"ignore_index默认为False,表示保留索引(不忽略)。设为True则表示忽略索引。
其他重要参数通过实例说明。
1.相同字段的表首位相连
首先准备三组DataFrame数据:
import pandas as pd
合并
dfs = [df1, df2, df3]
如果想要在合并后,标记一下数据都来自于哪张表或者数据的某类别,则也可以给concat加上 参数keys 。
result = pd.concat(dfs, keys=[table1, table2, table3])
此时,添加的keys与原来的index组成元组,共同成为新的index。
print(result.index)
2.横向表合并(行对齐)
准备两组DataFrame数据:
import pandas as pd
当axis为默认值0时:
result = pd.concat([df1, df2])
横向合并需要将axis设置为1 :
result = pd.concat([df1, df2], axis=1)
对比以上输出差异。
axis=0时,即默认纵向合并时,如果出现重复的行,则会同时体现在结果中
axis=1时,即横向合并时,如果出现重复的列,则会同时体现在结果中。
3.交叉合并
result = pd.concat([df1, df2], axis=1, join=inner)
总结
到此这篇关于python中DataFrame数据合并merge()和concat()方法的文章就介绍到这了,更多相关python数据合并merge()和concat()方法内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。