第7章 数据规整化:清理、转换、合并、重塑 (1)
2017-12-03 13:58
441 查看
第7章 数据规整化:清理、转换、合并、重塑 (1)
DataFrame.merge()
merge()用于对列的合并import pandas as pd;import numpy as np from pandas import Series,DataFrame df1 = DataFrame({'key':['b','b','a','c','a','a','b'], 'data1':range(7)}) df2 = DataFrame({'key':['a','b','d'], 'data2':range(3)}) ###df1 data1 key 0 0 b 1 1 b 2 2 a 3 3 c 4 4 a 5 5 a 6 6 b ###df2 data2 key 0 0 a 1 1 b 2 2 d ##merge()不指定用哪个列连接时,会将重叠列的列名当作键,不推荐 pd.merge(df1,df2) #######Output############ 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 ##on用来指定连接的列 pd.merge(df1,df2,on='key') #######Output############ 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()合并默认是"inner"连接,即取键的交集,除此以外还有"left""right""outer","outer"是取键并集,包括左连接右连接,用参数"how"指定 pd.merge(df1,df2,on='key',how='outer') #######Output############ data1 key data2 0 0.0 b 1.0 1 1.0 b 1.0 2 6.0 b 1.0 3 2.0 a 0.0 4 4.0 a 0.0 5 5.0 a 0.0 6 3.0 c NaN 7 NaN d 2.0 pd.merge(df1,df2,on='key',how='left') #######Output############ data1 key data2 0 0 b 1.0 1 1 b 1.0 2 2 a 0.0 3 3 c NaN 4 4 a 0.0 5 5 a 0.0 6 6 b 1.0 pd.merge(df1,df2,on='key',how='right') #######Output############ data1 key data2 0 0.0 b 1 1 1.0 b 1 2 6.0 b 1 3 2.0 a 0 4 4.0 a 0 5 5.0 a 0 6 NaN d 2 ####上述情况中两个DataFrame合并的列有同样的名字,如果名字不同,可以分别指定,此时不会合并为一列,保留各自列的名字 df3 = DataFrame({'lkey':['b','b','a','c','a','a','c'], 'data1':range(7)}) df4 = DataFrame({'rkey':['a','b','d'], 'data2':range(3)}) ###df3 data1 lkey 0 0 b 1 1 b 2 2 a 3 3 c 4 4 a 5 5 a 6 6 c ###df4 data2 rkey 0 0 a 1 1 b 2 2 d pd.merge(df3,df4,left_on='lkey',right_on='rkey') #######Output############ data1 lkey data2 rkey 0 0 b 1 b 1 1 b 1 b 2 2 a 0 a 3 4 a 0 a 4 5 a 0 a ###多对多合并操作 df5 = DataFrame({'key':['b','b','a','c','a','b'], 'data1':range(6)}) df6 = DataFrame({'key':['a','b','a','b','d'], 'data2':range(5)}) ###df5 data1 key 0 0 b 1 1 b 2 2 a 3 3 c 4 4 a 5 5 b ###df6 data2 key 0 0 a 1 1 b 2 2 a 3 3 b 4 4 d ####左连接 pd.merge(df5,df6,on = 'key',how='left') #######Output############ data1 key data2 0 0 b 1.0 1 0 b 3.0 2 1 b 1.0 3 1 b 3.0 4 2 a 0.0 5 2 a 2.0 6 3 c NaN 7 4 a 0.0 8 4 a 2.0 9 5 b 1.0 10 5 b 3.0 ####多对多连接产生的行是笛卡尔乘积 ####内连接 pd.merge(df5,df6,on='key',how='inner') #######Output############ data1 key data2 0 0 b 1 1 0 b 3 2 1 b 1 3 1 b 3 4 5 b 1 5 5 b 3 6 2 a 0 7 2 a 2 8 4 a 0 9 4 a 2 #####多个键合并 left = DataFrame({'key1':['foo','foo','bar'], 'key2':['one','two','one'], 'lval':[1,2,3]}) right = DataFrame({'key1':['foo','foo','bar','bar'], 'key2':['one','one','one','two'], 'rval':[4,5,6,7]}) ###left key1 key2 lval 0 foo one 1 1 foo two 2 2 bar one 3 ###right key1 key2 rval 0 foo one 4 1 foo one 5 2 bar one 6 3 bar two 7 ###传入由列名组成的列表 pd.merge(left,right,on=['key1','key2'],how='outer') #######Output############ key1 key2 lval rval 0 foo one 1.0 4.0 1 foo one 1.0 5.0 2 foo two 2.0 NaN 3 bar one 3.0 6.0 4 bar two NaN 7.0 ####合并后对重复列名的处理,suffixes可用于指定附加在两个对象重复列名后面的后缀 pd.merge(left,right,on='key1')#出现key2列名重复 #######Output############ key1 key2_x lval key2_y rval 0 foo one 1 one 4 1 foo one 1 one 5 2 foo two 2 one 4 3 foo two 2 one 5 4 bar one 3 one 6 5 bar one 3 two 7 ####suffixes=('','') pd.merge(left,right,on='key1',suffixes=('left','right')) #######Output############ key1 key2left lval key2right rval 0 foo one 1 one 4 1 foo one 1 one 5 2 foo two 2 one 4 3 foo two 2 one 5 4 bar one 3 one 6 5 bar one 3 two 7
Merge()函数参数
参数 | 说明 |
---|---|
left | 参与合并的左侧DataFrame |
right | 参与合并的右侧DataFrame |
how | “inner”,”outer”,”left”,”right”其中之一,默认为”inner” |
on | 用于连接的列名,必须存在左右两个DataFrame中,如果不指定,其他连接键也不指定,以left和right列名的交集作为连接键 |
left_on | 左侧DataFrame用作连接键的列 |
right_on | 右侧DataFrame用作连接键的列 |
left_index | 左侧行索引作为连接键 |
right_index | 右侧行索引作为连接键 |
sort | 根据连接键对合并后数据进行排序,默认为True,处理大数据时,禁用能获得更好性能 |
suffixes | 追加到重叠列名末尾,用于区分,默认是=(‘_x’,’_y’) |
copy | 默认为True。禁用可以避免将数据复制到结果数据结构中 |
相关文章推荐
- 第7章 数据规整化:清理、转换、合并、重塑(2)
- 《利用Python进行数据分析》笔记---第7章数据规整化:清理、转换、合并、重塑
- 第7章 数据规整化:清理、转换、合并、重塑(3)
- 第7章 数据规整化:清理、转换、合并、重塑(4)
- 数据规整化:清理、转换、合并、重塑 《用Python进行数据分析》读书笔记第7章
- 数据规整化:清理、转换、合并、重塑
- 利用Python进行数据分析——数据规整化:清理、转换、合并、重塑(七)(5) .
- 数据规整化:清理、转换、合并、重塑
- Python之数据规整化:清理、转换、合并、重塑
- Python之数据规整化:清理、转换、合并、重塑
- 数据规整化:清理、转换、合并、重塑
- 利用python进入数据分析之数据规整化:清理、转换、合并、重塑(一)
- chapter7-数据规整化:清理、转换、合并、重塑
- 《利用python进行数据分析》读书笔记--第七章 数据规整化:清理、转换、合并、重塑(二)
- 利用Python进行数据分析——数据规整化:清理、转换、合并、重塑(七)(1)
- 数据规整化:清理、转换、合并、重塑
- 数据规整化:清理,转换,合并,重塑
- 《利用python进行数据分析》读书笔记--第七章 数据规整化:清理、转换、合并、重塑(三)
- 利用Python进行数据分析——数据规整化:清理、转换、合并、重塑(七)(4) .
- 《利用python进行数据分析》读书笔记--第七章 数据规整化:清理、转换、合并、重塑(一)