首页 > 其他 > 详细

数据分析之DataFrame的级联and合并操作

时间:2020-06-30 18:32:38      阅读:66      评论:0      收藏:0      [点我收藏+]

pandas使用pd.concat函数,与np.concatenate函数类似,只是多了一些参数:

objs
axis=0
keys
join=‘outer‘ / ‘inner‘:表示的是级联的方式,outer会将所有的项进行级联(忽略匹配和不匹配),而inner只会将匹配的项级联到一起,不匹配的不级联
ignore_index=False

import numpy as np
import pandas as pd
from pandas import DataFrame

df1 = DataFrame(data=np.random.randint(0,100,size=(5,3)),columns=[‘A‘,‘B‘,‘C‘])
df2 = DataFrame(data=np.random.randint(0,100,size=(5,3)),columns=[‘A‘,‘D‘,‘C‘])

pd.concat((df1,df1),axis=1)      # 行链接

         A       B       C       A       B       C
0	76	72	83	76	72	83
1	72	73	35	72	73	35
2	74	26	77	74	26	77
3	13	81	82	13	81	82
4	40	21	41	40	21	41
  • 不匹配级联
    • 不匹配指的是级联的维度的索引不一致。例如纵向级联时列索引不一致,横向级联时行索引不一致
    • 有2种连接方式:
      • 外连接:补NaN(默认模式)
      • 内连接:只连接匹配的项
pd.concat((df1,df2),axis=0)            pd.concat((df1,df2),axis=0,join=‘outer‘)
	A	B	C	D
0	76	72.0	83	NaN
1	72	73.0	35	NaN
2	74	26.0	77	NaN
3	13	81.0	82	NaN
4	40	21.0	41	NaN
0	4	NaN	42	37.0
1	61	NaN	7	53.0
2	0	NaN	13	39.0
3	85	NaN	37	92.0
4	40	NaN	71	61.0

pd.concat((df1,df2),axis=0,join=‘inner‘)
	A	C
0	7	5
1	69	8
2	88	19
3	93	77
4	13	61
0	26	27
1	32	13
2	40	95
3	97	22
4	51	24
  • 如果想要保留数据的完整性必须使用outer(外连接)

合并操作

  • merge与concat的区别在于,merge需要依据某一共同列来进行合并

  • 使用pd.merge()合并时,会自动根据两者相同column名称的那一列,作为key来进行合并。

  • 注意每一列元素的顺序不要求一致
    技术分享图片
    技术分享图片
    技术分享图片

key的规范化

  • 当列冲突时,即有多个列名称相同时,需要使用on=来指定哪一个列作为key,配合suffixes指定冲突列名
    技术分享图片

  • 当两张表没有可进行连接的列时,可使用left_on和right_on手动指定merge中左右两边的哪一列列作为连接的列
    技术分享图片

数据分析之DataFrame的级联and合并操作

原文:https://www.cnblogs.com/freedom0923/p/13214917.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!