pandas 提供了三种主要方法可以对数据进行合并:
- pandas.merge()方法:数据库风格的合并;
- pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起;
- 实例方法combine_first()方法:合并重叠数据。
pandas.merge()方法:数据库风格的合并
例如,通过merge()方法将两个DataFrame合并:
![](https://i-blog.csdnimg.cn/blog_migrate/86d1e0564058383d50ad538f75e20ee1.png)
on='name'的意思是将name列当作键;
默认情况下,merge做的是内连接(inner),即键的交集。
其他方式还有左连接(left),右连接(right)和外连接(outer)。例如将刚刚的合并指定为左连接:
![](https://i-blog.csdnimg.cn/blog_migrate/6e32307422414fe8362af079355792b8.png)
再试试外连接,结果取键的并集:
![](https://i-blog.csdnimg.cn/blog_migrate/f002318483290e1277a56a4d8ca3e31a.png)
刚刚的三个合并都是以列名作为连接键,DataFrame还有一个join()方法可以以索引作为连接键
例如:
![](https://i-blog.csdnimg.cn/blog_migrate/4c26129fc7de07b75f2538ca2263c0f3.png)
pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起
例如:
![](https://i-blog.csdnimg.cn/blog_migrate/c42f6bc6497312c7acff09281d6f7e40.png)
默认情况下,concat在竖轴(axis=0)上连接,即产生一个新的Series。如果想要在横轴方向连接,则传入axis=1,例如:
![](https://i-blog.csdnimg.cn/blog_migrate/2ec6e5bb91d9df0d89333c13ed21c7e1.png)
实例方法combine_first()方法:合并重叠数据
例如:
![](https://i-blog.csdnimg.cn/blog_migrate/66102771786878bb3c81cc0b46ba32ae.png)
这个方法等价与:
![](https://i-blog.csdnimg.cn/blog_migrate/8ad069b4b9249703d65aa145efa57eae.png)
它做的是一个矢量化的if-else操作,如果s1里某个位置上的数据为空,则用s2同位置上的元素来补,你可以理解为“打补丁”操作。
接下来一篇随笔内容是:利用Python进行数据分析(13) pandas基础: 数据重塑/轴向转换,有兴趣的朋友欢迎关注本博客,也欢迎大家添加评论进行讨论。