pandas入门——数据合并concat函数

数据合并concat函数

  • 创建数据框
# 导入pandas与numpy包
import pandas as pd
import numpy as np

# 创建两个index与columns有重合的数据框
df1 = pd.DataFrame(data=np.ones((5,6))*1,columns=["a","b","c","d","e","f"],index=[0,1,2,3,4])
df2 = pd.DataFrame(data=np.ones((5,6))*2,columns=["e","f","g","h","j","k"],index=[2,3,4,5,6])

print(df1)
print(df2)

    a   b   c   d   e   f
0   1.0 1.0 1.0 1.0 1.0 1.0
1   1.0 1.0 1.0 1.0 1.0 1.0
2   1.0 1.0 1.0 1.0 1.0 1.0
3   1.0 1.0 1.0 1.0 1.0 1.0
4   1.0 1.0 1.0 1.0 1.0 1.0


    e   f   g   h   j   k
2   2.0 2.0 2.0 2.0 2.0 2.0
3   2.0 2.0 2.0 2.0 2.0 2.0
4   2.0 2.0 2.0 2.0 2.0 2.0
5   2.0 2.0 2.0 2.0 2.0 2.0
6   2.0 2.0 2.0 2.0 2.0 2.0
  • 进行竖直方向的合并 并且使用的合并方式是outer
print(pd.concat(objs=[df1,df2],axis=0,join="outer"))
    a   b   c   d   e   f   g   h   j   k
0   1.0 1.0 1.0 1.0 1.0 1.0 NaN NaN NaN NaN
1   1.0 1.0 1.0 1.0 1.0 1.0 NaN NaN NaN NaN
2   1.0 1.0 1.0 1.0 1.0 1.0 NaN NaN NaN NaN
3   1.0 1.0 1.0 1.0 1.0 1.0 NaN NaN NaN NaN
4   1.0 1.0 1.0 1.0 1.0 1.0 NaN NaN NaN NaN
2   NaN NaN NaN NaN 2.0 2.0 2.0 2.0 2.0 2.0
3   NaN NaN NaN NaN 2.0 2.0 2.0 2.0 2.0 2.0
4   NaN NaN NaN NaN 2.0 2.0 2.0 2.0 2.0 2.0
5   NaN NaN NaN NaN 2.0 2.0 2.0 2.0 2.0 2.0
6   NaN NaN NaN NaN 2.0 2.0 2.0 2.0 2.0 2.0
  • 进行水平方向的合并 并且使用的合并方式是outer
print(pd.concat(objs=[df1,df2],axis=1,join="outer"))

    a   b   c   d   e   f   e   f   g   h   j   k
0   1.0 1.0 1.0 1.0 1.0 1.0 NaN NaN NaN NaN NaN NaN
1   1.0 1.0 1.0 1.0 1.0 1.0 NaN NaN NaN NaN NaN NaN
2   1.0 1.0 1.0 1.0 1.0 1.0 2.0 2.0 2.0 2.0 2.0 2.0
3   1.0 1.0 1.0 1.0 1.0 1.0 2.0 2.0 2.0 2.0 2.0 2.0
4   1.0 1.0 1.0 1.0 1.0 1.0 2.0 2.0 2.0 2.0 2.0 2.0
5   NaN NaN NaN NaN NaN NaN 2.0 2.0 2.0 2.0 2.0 2.0
6   NaN NaN NaN NaN NaN NaN 2.0 2.0 2.0 2.0 2.0 2.0
  • 进行竖直方向的合并 并且使用的合并方式是inner
print(pd.concat(objs=[df1,df2],axis=0,join="inner"))

    e   f
0   1.0 1.0
1   1.0 1.0
2   1.0 1.0
3   1.0 1.0
4   1.0 1.0
2   2.0 2.0
3   2.0 2.0
4   2.0 2.0
5   2.0 2.0
6   2.0 2.0
  • 进行水平方向的合并 并且使用的合并方式是inner
print(pd.concat(objs=[df1,df2],axis=1,join="inner"))

    a   b   c   d   e   f   e   f   g   h   j   k
2   1.0 1.0 1.0 1.0 1.0 1.0 2.0 2.0 2.0 2.0 2.0 2.0
3   1.0 1.0 1.0 1.0 1.0 1.0 2.0 2.0 2.0 2.0 2.0 2.0
4   1.0 1.0 1.0 1.0 1.0 1.0 2.0 2.0 2.0 2.0 2.0 2.0
  • 以df1的索引为主进行合并 在水平方向
print(pd.concat(objs=[df1,df2],join_axes=[df1.index],axis=1))
    a   b   c   d   e   f   e   f   g   h   j   k
0   1.0 1.0 1.0 1.0 1.0 1.0 NaN NaN NaN NaN NaN NaN
1   1.0 1.0 1.0 1.0 1.0 1.0 NaN NaN NaN NaN NaN NaN
2   1.0 1.0 1.0 1.0 1.0 1.0 2.0 2.0 2.0 2.0 2.0 2.0
3   1.0 1.0 1.0 1.0 1.0 1.0 2.0 2.0 2.0 2.0 2.0 2.0
4   1.0 1.0 1.0 1.0 1.0 1.0 2.0 2.0 2.0 2.0 2.0 2.0
  • 以df1的列为主进行合并 在垂直方向
print(pd.concat(objs=[df1,df2],axis=0,join_axes=[df1.columns]))

    a   b   c   d   e   f
0   1.0 1.0 1.0 1.0 1.0 1.0
1   1.0 1.0 1.0 1.0 1.0 1.0
2   1.0 1.0 1.0 1.0 1.0 1.0
3   1.0 1.0 1.0 1.0 1.0 1.0
4   1.0 1.0 1.0 1.0 1.0 1.0
2   NaN NaN NaN NaN 2.0 2.0
3   NaN NaN NaN NaN 2.0 2.0
4   NaN NaN NaN NaN 2.0 2.0
5   NaN NaN NaN NaN 2.0 2.0
6   NaN NaN NaN NaN 2.0 2.0
  • dataframe追加数据框
print(df1.append(df2,ignore_index=True))

    a   b   c   d   e   f   g   h   j   k
0   1.0 1.0 1.0 1.0 1.0 1.0 NaN NaN NaN NaN
1   1.0 1.0 1.0 1.0 1.0 1.0 NaN NaN NaN NaN
2   1.0 1.0 1.0 1.0 1.0 1.0 NaN NaN NaN NaN
3   1.0 1.0 1.0 1.0 1.0 1.0 NaN NaN NaN NaN
4   1.0 1.0 1.0 1.0 1.0 1.0 NaN NaN NaN NaN
2   NaN NaN NaN NaN 2.0 2.0 2.0 2.0 2.0 2.0
3   NaN NaN NaN NaN 2.0 2.0 2.0 2.0 2.0 2.0
4   NaN NaN NaN NaN 2.0 2.0 2.0 2.0 2.0 2.0
5   NaN NaN NaN NaN 2.0 2.0 2.0 2.0 2.0 2.0
6   NaN NaN NaN NaN 2.0 2.0 2.0 2.0 2.0 2.0
  • dataframe追加series
s1 = pd.Series(data=np.arange(6),index=["a","b","c","d","e","f"])
print(df1.append(s1,ignore_index=True))

    a   b   c   d   e   f
0   1.0 1.0 1.0 1.0 1.0 1.0
1   1.0 1.0 1.0 1.0 1.0 1.0
2   1.0 1.0 1.0 1.0 1.0 1.0
3   1.0 1.0 1.0 1.0 1.0 1.0
4   1.0 1.0 1.0 1.0 1.0 1.0
5   0.0 1.0 2.0 3.0 4.0 5.0
  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值