1.join join方法将两个DataFrame中不同的列索引合并成为一个DataFrame参数的意义与merge基本相同,只是join方法默认左外连接how=left
2.concat concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,keys=None, levels=None, names=None, verify_integrity=False, sort=None, copy=True) objs合并的对象,axis=0列对齐
ignore_index=False 默认原来表格数据的索引 如果为True则忽略原来的索引,根据对表格的处理进行索引的修改
keys 为Dataframe添加键
join_axes=None 在新版本的pandas中不支持
如果想使用:把 pandas 降级到1.0.0 以下;
import pandas as pd
#join的使用
l={'姓名1':['赵宇','林级数','李鸿举'],'身高1':[170,195,168]}
r={'姓名2':['李华','戴维','陈宇航'],'身高2':[188,175,185]}
l_data=pd.DataFrame(l)
r_data=pd.DataFrame(r)
print("合并后的表:\n",l_data.join(r_data))
print('-'*30)
#concat的使用
data1=pd.Series([1,2,3],index=['a','b','c'])
data2=pd.Series([4,5,6],index=['d','e','f'])
data3=pd.concat([data1,data2])
print("使用concat合并后的数据:\n",data3)
print('-'*30)
data4=pd.concat([data1,data2],axis=1,sort=True)
print(data4)
print('-'*30)
#表格首尾相连
df1=pd.DataFrame({"A":["A0","A1","A2","A3","A4"],
"B":["B0","B1","B2","B3","B4"],
"C":["C0","C1","C2","C3","C4"],
"D":["D0","D1","D2","D3","D4"]})
df2=pd.DataFrame({"A":["A5","A6","A7","A8"],
"B":["B5","B6","B7","B8"],
"C":["C5","C6","C7","C8"],
"E":["E5","E6","E7","E8"]})
print(df1)
print('-'*30)
print(df2)
print('-'*30)
frames=[df1,df2]
result1=pd.concat(frames)
print("首尾相连结果:",result1)
print('-'*30)
result2=pd.concat(frames,keys=['x','y'])
print(result2)
print('-'*30)
#表格横向拼接 参数axis=1时,concat就是行对齐
result3=pd.concat(frames,axis=1)
print("横向拼接两个表后的结果:",result3)
print('-'*30)
#使用join join=inner结果为两表的交集 join=outer结果为两表的并集
result4=pd.concat(frames,join='inner')
print("两表交集\n",result4)
print('-'*30)
result5=pd.concat(frames,join='outer')
print("两表并集\n",result5)
print('-'*30)
运行结果:
D:\Python\p\Scripts\python.exe "D:\Python\python-learning\数据分析(二)\pandas中concat使用.py"
合并后的表:
姓名1 身高1 姓名2 身高2
0 赵宇 170 李华 188
1 林级数 195 戴维 175
2 李鸿举 168 陈宇航 185
------------------------------
使用concat合并后的数据:
a 1
b 2
c 3
d 4
e 5
f 6
dtype: int64
------------------------------
0 1
a 1.0 NaN
b 2.0 NaN
c 3.0 NaN
d NaN 4.0
e NaN 5.0
f NaN 6.0
------------------------------
A B C D
0 A0 B0 C0 D0
1 A1 B1 C1 D1
2 A2 B2 C2 D2
3 A3 B3 C3 D3
4 A4 B4 C4 D4
------------------------------
A B C E
0 A5 B5 C5 E5
1 A6 B6 C6 E6
2 A7 B7 C7 E7
3 A8 B8 C8 E8
------------------------------
首尾相连结果: A B C D E
0 A0 B0 C0 D0 NaN
1 A1 B1 C1 D1 NaN
2 A2 B2 C2 D2 NaN
3 A3 B3 C3 D3 NaN
4 A4 B4 C4 D4 NaN
0 A5 B5 C5 NaN E5
1 A6 B6 C6 NaN E6
2 A7 B7 C7 NaN E7
3 A8 B8 C8 NaN E8
------------------------------
A B C D E
x 0 A0 B0 C0 D0 NaN
1 A1 B1 C1 D1 NaN
2 A2 B2 C2 D2 NaN
3 A3 B3 C3 D3 NaN
4 A4 B4 C4 D4 NaN
y 0 A5 B5 C5 NaN E5
1 A6 B6 C6 NaN E6
2 A7 B7 C7 NaN E7
3 A8 B8 C8 NaN E8
------------------------------
横向拼接两个表后的结果: A B C D A B C E
0 A0 B0 C0 D0 A5 B5 C5 E5
1 A1 B1 C1 D1 A6 B6 C6 E6
2 A2 B2 C2 D2 A7 B7 C7 E7
3 A3 B3 C3 D3 A8 B8 C8 E8
4 A4 B4 C4 D4 NaN NaN NaN NaN
------------------------------
两表交集
A B C
0 A0 B0 C0
1 A1 B1 C1
2 A2 B2 C2
3 A3 B3 C3
4 A4 B4 C4
0 A5 B5 C5
1 A6 B6 C6
2 A7 B7 C7
3 A8 B8 C8
------------------------------
两表并集
A B C D E
0 A0 B0 C0 D0 NaN
1 A1 B1 C1 D1 NaN
2 A2 B2 C2 D2 NaN
3 A3 B3 C3 D3 NaN
4 A4 B4 C4 D4 NaN
0 A5 B5 C5 NaN E5
1 A6 B6 C6 NaN E6
2 A7 B7 C7 NaN E7
3 A8 B8 C8 NaN E8
------------------------------
进程已结束,退出代码为 0