pandas之concat

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)

运行结果:
pandas之concat_第1张图片

cs1 = pd.concat([left, right], keys=['m', 'n'], axis=1)
cs2 = pd.merge(left, right, left_index=True, right_index=True, how='outer')

运行结果:
pandas之concat_第2张图片
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)

运行结果:
pandas之concat_第3张图片

你可能感兴趣的:(pandas之concat)