《利用Python进行数据分析》第7章 合并数据集

本文详细介绍了如何使用Python的pandas库进行数据集合并,包括数据库风格的DataFrame合并和索引上的合并。讲解了merge函数的用法,如多对一、多对多的连接,以及内外连接的概念。此外,还提到了列名处理和索引作为连接键的情况,以及DataFrame的join方法。内容涵盖了merge的各种参数和选项,帮助读者深入理解数据合并的操作。
摘要由CSDN通过智能技术生成

合并数据集

数据分析和建模方面的大量编程工作都是用在数据准备上的:加载、清理、转换以及重塑。有时候,存放在文件或数据库中的数据并不能满足你的数据处理应用的要求。pandas对象中的数据可以通过一些内置的方式进行合并:
pandas.merge可根据一个或多个键将不同DataFrame中的行连接起来。

数据库风格的DataFrame合并

数据集的合并(merge)或连接(join)运算是通过一个或多个键将行链接起来的。这些运算是关系型数据库的核心。pandas的merge函数是对数据应用这些算法的主要切入点。


In [1]: from pandas import Series,DataFrame

In [2]: import pandas as pd

In [3]: import numpy as np

In [6]: df1=DataFrame({
  'key':['b', 'b', 'a', 'c', 'a', 'a', 'b'],
   ...: 'data1':range(7)})

In [7]: df2=DataFrame({
  'key': ['a', 'b', 'd'],'data2':range(3)})

In [8]: df1
Out[8]: 
data1 key
0 0 b
1 1 b
2 2 a
3 3 c
4 4 a
5 5 a
6 6 b

In [9]: df2
Out[9]: 
data2 key
0 0 a
1 1 b
2 2 d

这是一种多对一的合并。df1中的数据有多个被标记为a和b的行,而df2中key列的每个值则仅对应一行。对这些对象调用merge即可得到

In [10]: pd.merge(df1,df2)
Out[10]: 
data1 key data2
0 0 b 1
1 1 b 1
2 6 b 1
3 2 a 0
4 4 a 0
5 5 a 0

并没有指明要用哪个列进行连接。如果没有指定,merge就会将重叠列的列名当做键。不过,最好显式指定一下

In [11]: pd.merge(df1, df2, on='key')
Out[11]: 
data1 key data2
0 0 b 1
1 1 b 1
2 6 b 1
3 2 a 0
4 4 a 0
5 5 a 0

如果两个对象的列名不同,也可以分别进行指定

In [12]: df3 = DataFrame({
  'lkey': ['b', 'b', 'a', 'c', 'a', 'a', 'b'],
    ...: 'data1': range(7)})

In [13]: df4 = DataFrame({
  'rkey': ['a', 'b', 'd'],
    ...: 'data2': range(3)})

In [14]: df3
Out[14]: 
data1 lkey
0 0 b
1 1 b
2 2 a
3 3 c
4 4 a
5 5 a
6 6 b

In [15]: df4
Out[15]: 
data2 rkey
0 0 a
1 1 b
2 2 d

In [16]: pd.merge(df3, df4, left_on='lkey', right_on='rkey')
Out[16]: 
data1 lkey data2 rkey
0 0 b 1 b
1 1 b 1 b
2 6 b 1 b
3 2 a 0 a
4 4 a 0 a
5 5 a 0 a

已经注意到了,结果里面c和d以及与之相关的数据消失了。默认情况下,merge做的是”inner”连接;结果中的键是交集。其他方式还有”left”、”right”以及”outer”。外连接求取的是键的并集,组合了左连接和右连接的效果

In [17]: pd.merge(df1, df2, how='outer')
Out[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值