第7章 数据规整化:清理、转换、合并、重塑 (1)
来源:互联网 发布:重装系统安装不了软件 编辑:程序博客网 时间:2024/05/17 23:18
第7章 数据规整化:清理、转换、合并、重塑 (1)
DataFrame.merge()
merge()用于对列的合并
import pandas as pd;import numpy as npfrom pandas import Series,DataFramedf1 = DataFrame({'key':['b','b','a','c','a','a','b'], 'data1':range(7)})df2 = DataFrame({'key':['a','b','d'], 'data2':range(3)})###df1 data1 key0 0 b1 1 b2 2 a3 3 c4 4 a5 5 a6 6 b###df2 data2 key0 0 a1 1 b2 2 d##merge()不指定用哪个列连接时,会将重叠列的列名当作键,不推荐pd.merge(df1,df2)#######Output############ data1 key data20 0 b 11 1 b 12 6 b 13 2 a 04 4 a 05 5 a 0##on用来指定连接的列pd.merge(df1,df2,on='key')#######Output############ data1 key data20 0 b 11 1 b 12 6 b 13 2 a 04 4 a 05 5 a 0##---merge()合并默认是"inner"连接,即取键的交集,除此以外还有"left""right""outer","outer"是取键并集,包括左连接右连接,用参数"how"指定pd.merge(df1,df2,on='key',how='outer')#######Output############ data1 key data20 0.0 b 1.01 1.0 b 1.02 6.0 b 1.03 2.0 a 0.04 4.0 a 0.05 5.0 a 0.06 3.0 c NaN7 NaN d 2.0pd.merge(df1,df2,on='key',how='left')#######Output############ data1 key data20 0 b 1.01 1 b 1.02 2 a 0.03 3 c NaN4 4 a 0.05 5 a 0.06 6 b 1.0pd.merge(df1,df2,on='key',how='right')#######Output############ data1 key data20 0.0 b 11 1.0 b 12 6.0 b 13 2.0 a 04 4.0 a 05 5.0 a 06 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 lkey0 0 b1 1 b2 2 a3 3 c4 4 a5 5 a6 6 c###df4 data2 rkey0 0 a1 1 b2 2 dpd.merge(df3,df4,left_on='lkey',right_on='rkey')#######Output############ data1 lkey data2 rkey0 0 b 1 b1 1 b 1 b2 2 a 0 a3 4 a 0 a4 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 key0 0 b1 1 b2 2 a3 3 c4 4 a5 5 b###df6 data2 key0 0 a1 1 b2 2 a3 3 b4 4 d####左连接pd.merge(df5,df6,on = 'key',how='left')#######Output############ data1 key data20 0 b 1.01 0 b 3.02 1 b 1.03 1 b 3.04 2 a 0.05 2 a 2.06 3 c NaN7 4 a 0.08 4 a 2.09 5 b 1.010 5 b 3.0####多对多连接产生的行是笛卡尔乘积####内连接pd.merge(df5,df6,on='key',how='inner')#######Output############ data1 key data20 0 b 11 0 b 32 1 b 13 1 b 34 5 b 15 5 b 36 2 a 07 2 a 28 4 a 09 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 lval0 foo one 11 foo two 22 bar one 3###right key1 key2 rval0 foo one 41 foo one 52 bar one 63 bar two 7###传入由列名组成的列表pd.merge(left,right,on=['key1','key2'],how='outer')#######Output############ key1 key2 lval rval0 foo one 1.0 4.01 foo one 1.0 5.02 foo two 2.0 NaN3 bar one 3.0 6.04 bar two NaN 7.0####合并后对重复列名的处理,suffixes可用于指定附加在两个对象重复列名后面的后缀pd.merge(left,right,on='key1')#出现key2列名重复#######Output############ key1 key2_x lval key2_y rval0 foo one 1 one 41 foo one 1 one 52 foo two 2 one 43 foo two 2 one 54 bar one 3 one 65 bar one 3 two 7####suffixes=('','')pd.merge(left,right,on='key1',suffixes=('left','right'))#######Output############ key1 key2left lval key2right rval0 foo one 1 one 41 foo one 1 one 52 foo two 2 one 43 foo two 2 one 54 bar one 3 one 65 bar one 3 two 7
Merge()函数参数
阅读全文
0 0
- 第7章 数据规整化:清理、转换、合并、重塑 (1)
- 数据规整化:清理、转换、合并、重塑 《用Python进行数据分析》读书笔记第7章
- 《利用Python进行数据分析》笔记---第7章数据规整化:清理、转换、合并、重塑
- 第7章 数据规整化:清理、转换、合并、重塑(2)
- 第7章 数据规整化:清理、转换、合并、重塑(3)
- 第7章 数据规整化:清理、转换、合并、重塑(4)
- 第7章 数据规整化:清理、转换、合并、重塑(5)
- 数据规整化:清理,转换,合并,重塑
- 数据规整化:清理、转换、合并、重塑
- 数据规整化:清理、转换、合并、重塑
- 数据规整化:清理、转换、合并、重塑
- 数据规整化:清理、转换、合并、重塑
- Python之数据规整化:清理、转换、合并、重塑
- chapter7-数据规整化:清理、转换、合并、重塑
- 利用python进入数据分析之数据规整化:清理、转换、合并、重塑(一)
- 利用python进入数据分析之数据规整化:清理、转换、合并、重塑(二)
- 利用Python进行数据分析——数据规整化:清理、转换、合并、重塑(七)(5) .
- 利用Python进行数据分析——数据规整化:清理、转换、合并、重塑(七)(4) .
- 区分级数收敛和数列收敛
- 用java创建一个游戏窗口
- 判断一个数是否为质数/素数——从普通判断算法到高效判断算法思路
- 打印左对齐的三角形
- 升级tensorflow报连接出错,解决办法
- 第7章 数据规整化:清理、转换、合并、重塑 (1)
- springMVC 的工作原理和机制
- unity3d 第一天
- 题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。(java)
- 实验三Android手机拨号器开发
- 第十三周——项目三“是否二叉排序树”
- python解决SNIMissingWarning和InsecurePlatformWarning警告
- 【bzoj1143: [CTSC2008]祭祀river】有向无环图的最长反链
- JavaScript——ForEach语句和For…In语句的区别