Python pandas数据库风格的数据合并
2017-04-16 09:31
555 查看
我个人不是很熟悉数据库,不是很清楚什么是数据库风格。不过,通过简单的测试看一下这到底是什么功能,做一下简单的总结还是可以的。
In [1]:
import numpy
as
np
In [2]:
import pandas
as
pd
In [3]:
from pandas
import Series,DataFrame
In [4]:
df1 = DataFrame({'key':['b','b','a','c','a','a','b'],'data1':range(7)})
In [5]:
df2 = DataFrame({'key':['a','b','d'],'data2':range(3)})
In [6]:
df1
Out[6]:
data1 key
0 0 b
1 1 b
2 2 a
3 3 c
4 4 a
5 5 a
6 6 b
In [7]:
df2
Out[7]:
data2 key
0 0 a
1 1 b
2 2 d
In [8]:
pd.merge(df1,df2)
Out[8]:
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
看到这个结果有些不理解,说以df1为基础进行df2的合并,df1的c却丢失了。这就罢了,其实df2的数据也是不完整的。猜想是不是merge方法参数的顺序会对对结果有什么影响?把参数顺序反转一下,结果如下:
In [9]:
pd.merge(df2,df1)
Out[9]:
data2 key data1
0 0 a 2
1 0 a 4
2 0 a 5
3 1 b 0
4 1 b 1
5 1 b 6
上面的结果与第一次merge的结果完全一致,看来参数的顺序并不会对结果产生什么影响。继续找一下规律,找到一个新的规律:如果是把字母那一列作为key,那么合并的列表中全都是共有的key。而左右两边的数值则分别涵盖了merge的两组数据。为了验证假设,再做一个测试:
In [10]:
df2 = DataFrame({'key':['a','b','d','b'],'data2':range(4)})
In [11]:
pd.merge(df2,df1)
Out[11]:
data2 key data1
0 0 a 2
1 0 a 4
2 0 a 5
3 1 b 0
4 1 b 1
5 1 b 6
6 3 b 0
7 3 b 1
8 3 b 6
In [12]:
df2
Out[12]:
data2 key
0 0 a
1 1 b
2 2 d
3 3 b
从上面的结果可以看出,前面的总结猜测不错。merge功能实现的是共有key的所有数值表的合并。
In [1]:
import numpy
as
np
In [2]:
import pandas
as
pd
In [3]:
from pandas
import Series,DataFrame
In [4]:
df1 = DataFrame({'key':['b','b','a','c','a','a','b'],'data1':range(7)})
In [5]:
df2 = DataFrame({'key':['a','b','d'],'data2':range(3)})
In [6]:
df1
Out[6]:
data1 key
0 0 b
1 1 b
2 2 a
3 3 c
4 4 a
5 5 a
6 6 b
In [7]:
df2
Out[7]:
data2 key
0 0 a
1 1 b
2 2 d
In [8]:
pd.merge(df1,df2)
Out[8]:
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
看到这个结果有些不理解,说以df1为基础进行df2的合并,df1的c却丢失了。这就罢了,其实df2的数据也是不完整的。猜想是不是merge方法参数的顺序会对对结果有什么影响?把参数顺序反转一下,结果如下:
In [9]:
pd.merge(df2,df1)
Out[9]:
data2 key data1
0 0 a 2
1 0 a 4
2 0 a 5
3 1 b 0
4 1 b 1
5 1 b 6
上面的结果与第一次merge的结果完全一致,看来参数的顺序并不会对结果产生什么影响。继续找一下规律,找到一个新的规律:如果是把字母那一列作为key,那么合并的列表中全都是共有的key。而左右两边的数值则分别涵盖了merge的两组数据。为了验证假设,再做一个测试:
In [10]:
df2 = DataFrame({'key':['a','b','d','b'],'data2':range(4)})
In [11]:
pd.merge(df2,df1)
Out[11]:
data2 key data1
0 0 a 2
1 0 a 4
2 0 a 5
3 1 b 0
4 1 b 1
5 1 b 6
6 3 b 0
7 3 b 1
8 3 b 6
In [12]:
df2
Out[12]:
data2 key
0 0 a
1 1 b
2 2 d
3 3 b
从上面的结果可以看出,前面的总结猜测不错。merge功能实现的是共有key的所有数值表的合并。
相关文章推荐
- python:pandas合并csv文件(图书数据集成)
- PANDAS 数据合并与重塑(concat篇) 原创 2016年09月13日 19:26:30 47784 pandas作者Wes McKinney 在【PYTHON FOR DATA ANALYS
- 利用 Python 进行数据分析(十二)pandas:数据合并
- 利用 Python 进行数据分析(十二)pandas:数据合并
- python 数据库连接及pandas 接数据及日期循环
- python - pandas dataFrame merge 数据合并
- 利用Python进行数据分析(12) pandas基础: 数据合并
- python:pandas合并csv文件的方法(图书数据集成)
- python、pandas文件合并、数据去重
- 利用Python进行数据分析(12) pandas基础: 数据合并
- python pandas.DataFrame 数据合并
- 使用Python pandas对不同列名的数据进行合并
- python/pandas数据分析(十三)-数据清理、转换、合并,重塑
- python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
- pandas io tools(使用python处理数据时候经常用到)
- java读取数据库数据相同list值合并
- Exchange 2010 数据库非正常恢复及用户邮箱数据合并
- 利用Python实现分布于各工作空间中的分幅数据合并
- 数据库中多行数据合并成一行
- 合并百度影音的离线数据 with python 2.1 bdv格式的更新