pandas——数据整合concat,merge

合并pd.concat([数表名1,数表名2…],axis=,join=)

这个函数横向合并时,将表的所有数据通过索引相同合并,而merge函数可以选择键值合并
参数功能:
aixs: 设置合并方式,0为纵向;1为横向
jion: 设置是交集还是并集,’‘inner’‘是交集;’‘outer’'是并集

import pandas as pd
import numpy as np 

df1=pd.DataFrame({'姓名':['小红','小风','小黑'],\
					'年龄':['18','15','17'],\
					'性别':['女','男','男']})
df2=pd.DataFrame({'姓名':['大红','大风','大黑','大岚'],\
					'年龄':['28','25','27','25'],\
					'性别':['女','男','男','女']})
df3=pd.DataFrame({'姓名':['张三','小李','小明','大明'],\
					'年龄':['20','19','22','23'],\
					'性别':['女','男','男','女']})
print('下面的是=横向==交集==产生的结果************')
merge=pd.concat([df1,df2],axis=1,join='inner')
print(merge)
print('\n下面的是=横向==并集==产生的结果**************')
merge1=pd.concat([df1,df2],axis=1,join='outer')
print(merge1)
print('\n下面的是=纵向====无索引产生的结果**************')
merge2=pd.concat([df1,df2],axis=0,ignore_index=True)
print(merge2)
print('\n下面的是=纵向====有索引产生的结果**************')
merge3=pd.concat([df1,df2],axis=0,ignore_index=False)
print(merge3)
print('\n下面的是=纵向====drop消去索引产生的结果并inplace作用到原数***********')
merge3.reset_index(drop=True,inplace=True)
print(merge3)
'''
下面的是=横向==交集==产生的结果************
   姓名  年龄 性别  姓名  年龄 性别
0  小红  18  女  大红  281  小风  15  男  大风  252  小黑  17  男  大黑  27  男

下面的是=横向==并集==产生的结果**************
    姓名   年龄   性别  姓名  年龄 性别
0   小红   18    女  大红  281   小风   15    男  大风  252   小黑   17    男  大黑  273  NaN  NaN  NaN  大岚  25  女

下面的是=纵向====无索引产生的结果**************
   姓名  年龄 性别
0  小红  181  小风  152  小黑  173  大红  284  大风  255  大黑  276  大岚  25  女

下面的是=纵向====有索引产生的结果**************
   姓名  年龄 性别
0  小红  181  小风  152  小黑  170  大红  281  大风  252  大黑  273  大岚  25  女

下面的是=纵向====drop消去索引产生的结果并inplace作用到原数***********
   姓名  年龄 性别
0  小红  181  小风  152  小黑  173  大红  284  大风  255  大黑  276  大岚  25

合并pd.merge()

将数据表中的某一列作为键值,当键值相同时放在同一行,相当于将该行键值合并
pd.merge(left=, right= ,how= " “,left_on =” “, right_on=” ",)
参数:
**left:**放到左边的数据表变量;right:放在右边数据表变量
**how:**合并方式,left:左表全显示,right右表全显示;outer:两个都显示;inner:只显示相等的
**left_on:**左边要关联的属性;**right_on:**右边要关联的属性,可以是列表表示多个相等的元素

import pandas as pd
import numpy as np 

df1=pd.DataFrame({'姓名':['小红','小风','小黑'],\
					'年龄':['18','15','17'],\
					'性别':['女','男','男']})
df2=pd.DataFrame({'姓名':['大红','小风','大黑','小黑'],\
					'age':['28','25','27','25'],\
					'gender':['女','男','男','女']})
print('\n按照==左边==列表显示-----')
merg=pd.merge(left=df1,right=df2,how="left",\
	left_on="姓名",right_on="姓名",)
print(merg)
print('\n按照==右边===列表显示-----')
merg1=pd.merge(left=df1,right=df2,how="right",\
	left_on="姓名",right_on="姓名",)
print(merg1)
print('\n按照===交===显示-----')
merg2=pd.merge(left=df1,right=df2,how="inner",\
	left_on="姓名",right_on="姓名",)
print(merg2)
print('\n按照===并===显示-----')
merg3=pd.merge(left=df1,right=df2,how="outer",\
	left_on="姓名",right_on="姓名",)
print(merg3)
'''
按照==左边==列表显示-----
   姓名  年龄 性别  age gender
0  小红  18  女  NaN    NaN
1  小风  15  男   25      男
2  小黑  17  男   25      女

按照==右边===列表显示-----
   姓名   年龄   性别 age gender
0  小风   15    男  25      男
1  小黑   17    男  25      女
2  大红  NaN  NaN  28      女
3  大黑  NaN  NaN  27      男

按照===交===显示-----
   姓名  年龄 性别 age gender
0  小风  15  男  25      男
1  小黑  17  男  25      女

按照===并===显示-----
   姓名   年龄   性别  age gender
0  小红   18    女  NaN    NaN
1  小风   15    男   25      男
2  小黑   17    男   25      女
3  大红  NaN  NaN   28      女
4  大黑  NaN  NaN   27      男
'''
发布了70 篇原创文章 · 获赞 1 · 访问量 2430

猜你喜欢

转载自blog.csdn.net/weixin_43794311/article/details/104688814