concat方法相当于数据库中的全连接(union all)
pandas.concat(objs, axis=0, join=‘outer’, join_axes=None, ignore_index=False,keys=None, levels=None, names=None, verify_integrity=False) 参数:
objs: 需要连接的pandas对象的列表或字典,唯一必须的参数;axis:连接的轴,0是行,1是列 ,默认axis=0;join:连接方式有 inner和outer,默认为outer;join_axes=[]:指定自定义的索引;keys=[]:创建层次化索引;ignore_index=True:重建索引1)axis 当axis=0时,pd.concat([obj1, obj2])的效果与obj1.append(obj2)是相同的;当axis=1时,pd.concat([obj1, obj2], axis=1)的效果与pd.merge(obj1, obj2, left_index=True, right_index=True, how=‘outer’)是相同的。
import pandas as pd left = pd.DataFrame({ 'Name': list('AB'), 'age': [28, 30]}, index=list(range(2))) right = pd.DataFrame({ 'Name': ['Billy', 'Brian', 'Bob'], 'class': ['sub2', 'sub6', 'sub5']}, index=list(range(1, 4))) rs1 = pd.concat([left, right], keys=['x', 'y']) rs2 = left.append(right) print(rs1) print("---"*16) print(rs2)运行结果:
cs1 = pd.concat([left, right], keys=['m', 'n'], axis=1) cs2 = pd.merge(left, right, left_index=True, right_index=True, how='outer')运行结果: 2)join inner取交集,outer取并集
cs1 = pd.concat([left, right], keys=['m', 'n'], axis=1, join='inner') cs2 = pd.concat([left, right], keys=['m', 'n'], axis=1)运行结果: