一 、concat数据连接
1.1、concat()函数参数
pd.concat(objs, axis=0, join='outer', ignore index=False, keys=None, levels=None, names=Noneverify integrity=False, sort= False, copy=True)
objs:多个 DataFrame 或者 Series
axis:0-行拼接 1-列拼接
join:{‘inner’,'outer’},其他轴上的数据是按交集 (inner) 还是并集 (outer) 进行合并inner
ignore_index:布尔类型,是否保留原表索引
keys:列表,使用传递的键作为最外层级别来构造层次结构索引,就是给每个表指定一个一级索引
levels:列表,用于构造Multilndex的特定级别
names:列表,索引的名称,包括多层索引
verify_integrity:布尔类型,参数为True时,如果合并的数据与原数据包含索引相同的行,将报错
sort:布尔类型,对非连接轴进行排序
copy:布尔类型,是否进行深拷贝
1.2、行连接
1.2.1、数据准备
import numpy as np
import pandas as pd
df1 = pd.DataFrame(data=np.random.randint(1,151,size=(5,4))
,columns=['Python','Math','English','Chinese']
,index=list('abcde'))
df1
df2 = pd.DataFrame(data=np.random.randint(1,151,size=(5,4))
,columns=['Java','Math','English','Chinese']
,index=list('xyzab'))
df2
1.2.2、并集模式拼接(join=‘outer’)
pd.concat([df2,df1],axis=0) #df1与df2行拼接
df2.append(df1) #使用append 追加 达到拼接效果
1.2.3、交集模式拼接(join=‘inner’)
pd.concat([df1,df2],axis=0,join='inner')
1.3、列连接
1.3.1、并集模式拼接(join=‘outer’)
pd.concat([df1,df2],axis=1,join='outer')
1.3.2、交集模式拼接(join=‘inner’)
pd.concat([df1,df2],axis=1,join='inner')
二、insert数据插入
2.1、insert函数参数
df.insert(loc,column,value,allow_duplicates)
loc:#int 使用整数定义_列数据_插入的位置,必须是0到columns列标签的长度 0 <= loc <= len(columns)
column: # 可选字符串、数字或者object;列标签名
value: # 整数、Series或者数组型数据
allow_duplicates: # 可选参数,如果dataframe中已经存在某列,将allow_duplicates置为true才可以将指定得列插入
2.2、插入不存在列数据
import numpy as np
import pandas as pd
df1 = pd.DataFrame(data=np.random.randint(1,151,size=(5,4))
,columns=['Python','Math','English','Chinese']
,index=list('abcde'))
df1.insert(loc=1,column='Java',value=100) #插入Java列数据 值为100
df1
2.3、插入存在列数据
df1.insert(loc=1,column='Python',value=100) #插入Python列数据 值为100
直接报错了,必须要加上参数allow_duplicates=True
df1.insert(loc=1,column='Python',value=100,allow_duplicates=True)#插入Python列数据 值为100
df1
三、merge数据合并(sql join风格)
3.1、merge函数参数
pd.merge(DataFrame2, how=‘inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', ‘_y'))
how | 默认为inner,可设为inner/outer/left/right |
---|---|
on | 根据某个字段进行连接,必须存在于两个DateFrame中(若未同时存在,则需要分别使用left_on和right_on来设置) |
left_on | 左连接,以DataFrame1中用作连接键的列 |
right_on | 右连接,以DataFrame2中用作连接键的列 |
left_index | 将DataFrame1行索引用作连接键 |
right_index | 将DataFrame2行索引用作连接键 |
sort | 根据连接键对合并后的数据进行排列,默认为True |
suffixes | 对两个数据集中出现的重复列,新数据集中加上后缀_x,_y进行区别 |
3.2、使用inner内连接模式
import pandas as pd
import numpy as np
# 表⼀中记录的是name和体重信息
df1 = pd.DataFrame(data = {'name':['softpo','Daniel','Brandon','Ella'],'weight':[70,55,75,65]})
# 表⼆中记录的是name和身⾼信息
df2 = pd.DataFrame(data = {'name':['softpo','Daniel','Brandon','Cindy'],'height':[172,170,170,166]})
df3 = pd.DataFrame(data = {'名字':
['softpo','Daniel','Brandon','Cindy'],'height':[172,170,170,166]})
# 根据共同的name将俩表的数据,进⾏合并
pd.merge(df1,df2,
how = 'inner',# 内合并代表两对象交集
on = 'name' #两个表的关联建,即相同便可以关联上,不同数据就关联不上
)
3.3、使用outer外连接模式
pd.merge(df1,df3,
how = 'outer',# 全外连接,两对象并集
left_on = 'name',# 左边DataFrame使⽤列标签 name进⾏合并
right_on = '名字')# 右边DataFrame使⽤列标签 名字进⾏合并