pandas 级联

一. 简单级联

pd.concat()
索引在级联时可重复
参数:

  • ignore_index: 忽略创建时的索引
  • keys: 可实多层索引,使合并后的数据更加清晰
  • join
  • axis: 0/1
def make_df(cols,inds):
    data = {c:[ c+str(i) for i in inds] for c in cols}
    return pd.DataFrame(data,index=inds,columns=cols)

df1 = make_df(['a','b'],[0,1])
df2 = make_df(['a','b'],[1,4])
print(pd.concat((df1,df2)))
#     a   b
# 0  a0  b0
# 1  a1  b1
# 1  a1  b1
# 4  a4  b4

print(pd.concat((df1,df2),ignore_index=True))
#     a   b
# 0  a0  b0
# 1  a1  b1
# 2  a1  b1
# 3  a4  b4

print(pd.concat((df1,df2),keys=['x','y']))
#       a   b
# x 0  a0  b0
#   1  a1  b1
# y 1  a1  b1
#   4  a4  b4

二. 不匹配级联

pd.concat() 参数:

  • join() : 'outer' (默认),'inner'
  • join_axes: 指定连接轴
outer: 外连接 补NaN(默认)
inner: 内连接
def make_df(cols,inds):
    data = {c:[ c+str(i) for i in inds] for c in cols}
    return pd.DataFrame(data,index=inds,columns=cols)
df1 = make_df(['a','b'],[0,1])
df2 = make_df(['a','c'],[1,4])

print(pd.concat([df1,df2]))
#     a    b    c
# 0  a0   b0  NaN
# 1  a1   b1  NaN
# 1  a1  NaN   c1
# 4  a4  NaN   c4

print(pd.concat([df1,df2],join='inner'))
#     a
# 0  a0
# 1  a1
# 1  a1
# 4  a4

三. 使用 append() 添加

def make_df(cols,inds):
    data = {c:[ c+str(i) for i in inds] for c in cols}
    return pd.DataFrame(data,index=inds,columns=cols)
df1 = make_df(['a','b'],[0,1])
df2 = make_df(['a','b'],[1,4])

print(df1.append(df2))
#     a   b
# 0  a0  b0
# 1  a1  b1
# 1  a1  b1
# 4  a4  b4

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容