python数据分析-pandas模块基础知识(6)

呀~博主是正在学习数据分析的一员,记录的是自己学习过程中总结的知识点,肯定有不完善的地方,如有问题可以私聊我改正,共同学习进步。希望大家都能保持学习的热情,坚持自己,不断超越自己!
博客地址:qxi的博客

还是可以先预习下前面的知识点耶:
pandas基础知识(1)
pandas基础知识(2)
pandas基础知识(3)
pandas基础知识(4)
pandas基础知识(5)
PS:我先简单说明一下哈,我写的文章标题都是按照1,2,3···这种顺序来写的,可能不是很清楚,但是我每一篇的开头都用粗体字标出来本篇文章讲的是哪些内容,希望大家可以按照这个思路去看,会比较清晰~
#今天这篇主要讲的是利用concat()函数对不同的DataFrame进行合并,也涉及了append()函数#

  1. 利用concat()函数合并

①利用concat()函数进行合并,定义asix=0时是逐行操作,即上下合并;
②定义ignore_index=True表示忽略原来的索引,重新排好索引顺序(0,1,2,3···)

import pandas as pd
import numpy as np
df1=pd.DataFrame(np.ones((2,3))*0,columns=['a','b','c'])
df2=pd.DataFrame(np.ones((2,3))*1,columns=['a','b','c'])
df3=pd.DataFrame(np.ones((2,3))*2,columns=['a','b','c'])
print(df1)
print(df2)
print(df3)
res1=pd.concat([df1,df2,df3],axis=0) #逐行操作,上下合并
print(res1)
res2=pd.concat([df1,df2,df3],axis=0,ignore_index=True) #重新排好索引
print(res2)

运行结果:

     a    b    c
0  0.0  0.0  0.0
1  0.0  0.0  0.0  #df1
     a    b    c
0  1.0  1.0  1.0
1  1.0  1.0  1.0  #df2
     a    b    c
0  2.0  2.0  2.0
1  2.0  2.0  2.0  #df3
     a    b    c
0  0.0  0.0  0.0
1  0.0  0.0  0.0
0  1.0  1.0  1.0
1  1.0  1.0  1.0
0  2.0  2.0  2.0
1  2.0  2.0  2.0  #直接就上下合并
     a    b    c
0  0.0  0.0  0.0
1  0.0  0.0  0.0
2  1.0  1.0  1.0
3  1.0  1.0  1.0
4  2.0  2.0  2.0
5  2.0  2.0  2.0  #上下合并完对索引重新排序

③在concat()函数中定义join=’outer’时,合并之后没有匹配的值会自动用nan值填充;
定义join=’inner’时,只合并两者都有的值,两者都有b,c,d列

import pandas as pd
import numpy as np
df1=pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'],index=[1,2,3])
df2=pd.DataFrame(np.ones((3,4))*1,columns=['b','c','d','e'],index=[2,3,4])
print(df1)
print(df2)
Res1=pd.concat([df1,df2],join='outer')
print(res1)
Res2=pd.concat([df1,df2],join='inner')
print(res2)

运行结果:

     a    b    c    d
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
3  0.0  0.0  0.0  0.0  #df1
     b    c    d    e
2  1.0  1.0  1.0  1.0
3  1.0  1.0  1.0  1.0
4  1.0  1.0  1.0  1.0  #df2
     a    b    c    d    e
1  0.0  0.0  0.0  0.0  NaN
2  0.0  0.0  0.0  0.0  NaN
3  0.0  0.0  0.0  0.0  NaN
2  NaN  1.0  1.0  1.0  1.0
3  NaN  1.0  1.0  1.0  1.0
4  NaN  1.0  1.0  1.0  1.0   #为res1,直接合并,没有匹配的值用nan值
     b    c    d
1  0.0  0.0  0.0
2  0.0  0.0  0.0
3  0.0  0.0  0.0
2  1.0  1.0  1.0
3  1.0  1.0  1.0
4  1.0  1.0  1.0  #为res2,只合并两者都有的,b,c,d列
  1. append()函数也可以用来合并DataFrame

①基本形式为df1.append(df2)把df2合并到df1中;
也可以合并多个,比如df1.append([df2,df3])把df2与df3合并到df1

import pandas as pd
import numpy as np
df1=pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'],index=[1,2,3])
df2=pd.DataFrame(np.ones((3,4))*1,columns=['a','b','c','d'],index=[2,3,4])
print(df1)
print(df2)
res=df1.append(df2,ignore_index=True) #把df2合并到df1上
print(res)

运行结果:

     a    b    c    d
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
3  0.0  0.0  0.0  0.0  #df1
     a    b    c    d
2  2.0  2.0  2.0  2.0
3  2.0  2.0  2.0  2.0
4  2.0  2.0  2.0  2.0  #df2
     a    b    c    d
0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
3  2.0  2.0  2.0  2.0
4  2.0  2.0  2.0  2.0
5  2.0  2.0  2.0  2.0  #append()合并

②把单独一行合并到DataFrame中,借助Series(不懂看前面pandas基础知识(1)),同样也用append()函数

import pandas as pd
import numpy as np
df1=pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'],index=[1,2,3])
print(df1)
s=pd.Series([3,3,3,3],index=['a','b','c','d'])  #Series结构
res=df1.append(s,ignore_index=True)  #把s合并进df1
print(res)

运行结果:

     a    b    c    d
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
3  0.0  0.0  0.0  0.0  #df1
     a    b    c    d
0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
3  3.0  3.0  3.0  3.0  #多了一行

关于DataFrame的合并内容相对比较多,除了上面讲的函数,还会用到merge函数,这个就留到下篇文章啦~
记得点赞-收藏-关注我哟

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值