Python数据分析第四课:数据的处理(数据合并、数据筛选、数据排序)

一、数据合并

数据合并主要包括两种操作:

  • 轴向连接(concatenation):pd.concat()可以沿一个轴将多个DataFrame对象连接在一起,形成一个新的DataFrame对象
  • 融合(merging):pd.merge()方法可以根据一个或多个键将不同的DataFrame中的行连接在一起
1. 轴向连接pd.concat

pd.concat()函数可以将根据不同的轴进行合并,常用参数如下:

pd.concat(objs,axis=0,join='outer')

  • objs:Series、DataFrame或者是panel构成的序列list
  • axis:需要合并链接的轴,0是行,1是列,默认为0
  • join:连接的方式inner,或者outer,默认是outer
import pandas as pd

dict_1 = {
   
         'A':['A0','A1','A2','A3'],
         'B':['B0','B1','B2','B3'],
         'C':['C0','C1','C2','C3']}
df1 = pd.DataFrame(dict_1)
df1
A B C
0 A0 B0 C0
1 A1 B1 C1
2 A2 B2 C2
3 A3 B3 C3
dict_2 = {
   
         'B':['B0','B1','B2','B3'],
         'C':['C0','C1','C2','C3'],
         'D':['D0','D1','D2','D3']}
df2 = pd.DataFrame(dict_2)
df2
B C D
0 B0 C0 D0
1 B1 C1 D1
2 B2 C2 D2
3 B3 C3 D3

当使用pd.concat()默认参数合并df1和df2时:

df3 = pd.concat([df1,df2], axis=0, join='outer')
df3
A B C D
0 A0 B0 C0 NaN
1 A1 B1 C1 NaN
2 A2 B2 C2 NaN
3 A3 B3 C3 NaN
0 NaN B0 C0 D0
1 NaN B1 C1 D1
2 NaN B2 C2 D2
3 NaN B3 C3 D3

通过以上的结果发现,当join=‘outer’,axis参数为0时,列进行并集处理,纵向表拼接,缺失值由NaN填充,并且会保留原有数据的行索引。

如果两个表的Index都没有实际含义,使用ignore_index参数,设置成True,即可重新整理一个新的index。

pd.concat([df1,df2],axis=0,join='outer',ignore_index=True

df4 = pd.concat([df1,df2],axis=0,join='outer',ignore_index=True)
df4
A B C D
0 A0 B0 C0 NaN
1 A1 B1 C1 NaN
2 A2 B2 C2 NaN
3 A3 B3 C3 NaN
4 NaN B0 C0 D0
5 NaN B1 C1 D1
6 NaN B2 C2 D2
7 NaN B3 C3 D3

当我们将concat()的axis参数调整为1,合并df1和df2时:

df5 = pd.concat([df1,df2],axis=1,join='outer')
df5
A B C B C D
0 A0 B0 C0 B0 C0 D0
1 A1 B1 C1 B1 C1 D1
2 A2 B2 C2 B2 C2 D2
3 A3 B3 C3 B3 C3 D3
当我们将concat()的join参数调整为inner,合并df1和df2时:
df6 = pd.concat([df1,df2],axis=0,join='inner')
df6
B C
0 B0 C0
1 B1 C1
2 B2 C2
3 B3 C3
0 B0 C0
1 B1 C1
2 B2 C2
3 B3 C3

通过以上的结果可知:

  • 如果join参数为inner,得到的是两表的交集;
  • 如果join参数为outer,得到的是两表的并集。
2. 融合pd.merge()

pd.merge()的常用参数如下:

pd.merge(left,right,how='inner',on=None)

参数介绍:

  • left和right:两个要合并的DataFrame
  • how:连接方式,有inner、left、right、outer,默认为inner
  • on:指的是用于连接的列索引名称,必须存在于左右两个DataFrame,如果没有指定且其他参数也没有指定,则以两个DataFrame列名交集作为连接键
import pandas 
  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值