python pandas DataFrame合并

标签:
杂谈 |
分类: python |
一、简介
Python Code
Python Code
python中pandas的DataFrame是数据分析中常用的数据结构之一,通常从外部文件中导入的文件都是存储为DataFrame格式的,因此掌握DataFrame的相关操作有助于快速准确的进行后续的数据分析,本节主要介绍DataFrame的合并过程,主要参考了《利用python进行数据分析》这本书。
二、DataFrame合并
其实可以将python的DataFrame类型的一个数据看出一个SQL中的数据表,DataFrame的合并其实就有SQL中的表关联是完全相似的,其会有内连接、外链接、左连接和右连接之类的分类。下面分别从完全相同的DataFrame合并及按照指定列进行合并两个方面介绍。
(一)完全相同的DataFrame的合并
这里面所说的完全相同是指两个DataFrame的所有的列名完全相同,当然列名不同也是能合并的,具体解释如下图的程序所示:
首先定义三个不同的DataFrame:
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
from
data1 data2 frame1 frame2 frame3 print(frame1) print('--------------------------') print(frame2) print('--------------------------') print(frame3) |
三个DataFrame中的内容分别如下图所示:
通过合并DataFrame可以得到如下图所示的结果:
http://s3/mw690/0038eKILzy7iG1t3kFc62&690pandas DataFrame合并" TITLE="python pandas DataFrame合并" />
其中frame1和frame2的有完全相同的列名,因此合并后的结果merge1还是有两个列;而frame1和frame3只有一个列名相同,因此合并的结果是保留共同的列在加上各自所有的列名,故结果为三列数据了。
其中frame1和frame2的有完全相同的列名,因此合并后的结果merge1还是有两个列;而frame1和frame3只有一个列名相同,因此合并的结果是保留共同的列在加上各自所有的列名,故结果为三列数据了。
由上面的解释我们同时能够得到append方法的另外一个功能就是可以给DataFrame方法添加列。
(二)按照指定列DataFrame的合并(merge)
按照指定列合并DataFrame就相当于SQL中不同表之间按照不同的字段进行join操作一样,DataFrame中的合并主要用merge函数,下面首先解释一下merge函数的主要用法及参数:
pd.merge(df1,df2)
主要参数介绍:
left:参与合并的左边的DataFrame(相当于SQL的join中的左表);
right:参数合并的右边的DataFrame(相当于SQL的join中的右表);
how:为合并的方式,分别为'inner','outer','left','right',默认为'inner'(相当于SQl中表连接的内连接、外链接、左链接和右连接);
on:两个DataFrame用户连接的列名,必须同时存在于两个DataFrame中,如果未指定则为两个表的交集作为连接键;
left_on:左表用于连接的列(主要用户两个DataFrame不存在相同的列名时);
right_on:右表用于连接的列;
left_index:将左边的DataFrame的索引作为连接键;
right_index:将右边的DataFrame的索引作为连接键;
sort:根据连接键对合并的结果进行排序;
suffixes:字符串的元组,用于追加于重叠列名的末尾,默认为(_x,_y)
完整代码如下:
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
#
''' python from data1 data2 frame1 frame2 frame3 print(frame1) print('--------------------------') print(frame2) print('--------------------------') print(frame3) merge1 merge2 print(merge1) print(merge2) #首先定义两个DataFrame df1 df2 print(df1) print(df2) #实现DataFrame的合并(默认情况下) pd.merge(df1,df2) pd.merge(df1,df2,on='key') #指定连接键的列名称 df3 df4 pd.merge(df3,df4,left_on='lkey',right_on='rkey') #外链接 pd.merge(df1,df2,how='outer') #按照多个键的合并 left right pd.merge(left,right,on=['key1','key2'],how='outer') left1 right1 pd.merge(left1,right1,left_on='key',right_index=True) |