1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > pandas的数据拼接与合并(concat join merge)

pandas的数据拼接与合并(concat join merge)

时间:2024-02-03 10:18:10

相关推荐

pandas的数据拼接与合并(concat join merge)

代码示例:

import pandas as pd import numpy as npfrom pandas import Series,DataFrame#数据的拼接:concat'''axis=0 , join='inner' : 行上面进行伸缩,列的上面取交集axis=0 , join='outer' : 行上面进行伸缩,列的上面取并集 等价于 df1.append(df2)axis=1 , join='inner' : 列上面进行伸缩,行的上面取交集axis=1 , join='outer' : 列上面进行伸缩,行的上面取并集ignore_index: 指的是拼接后是否忽视原df各自的索引'''df1 = pd.DataFrame(np.arange(6).reshape(3,2),columns=['a','c'])df2 = pd.DataFrame(np.arange(6).reshape(2,3),columns=['c','d','e'])print(pd.concat([df1,df2]))'''打印:a c d e0 0.0 1 NaN NaN1 2.0 3 NaN NaN2 4.0 5 NaN NaN0 NaN 0 1.0 2.01 NaN 3 4.0 5.0'''print(pd.concat([df1,df2],axis=0,join='outer'))'''打印:a c d e0 0.0 1 NaN NaN1 2.0 3 NaN NaN2 4.0 5 NaN NaN0 NaN 0 1.0 2.01 NaN 3 4.0 5.0'''print(pd.concat([df1,df2],axis=1,join='inner'))'''打印:a c c d e0 0 1 0 1 21 2 3 3 4 5'''print(pd.concat([df1,df2],axis=0,join='outer',ignore_index=True))'''打印:a c d e0 0.0 1 NaN NaN1 2.0 3 NaN NaN2 4.0 5 NaN NaN3 NaN 0 1.0 2.04 NaN 3 4.0 5.0'''#数据的合并:join。结果默认是以左表为基础显示,how='left' ,'right' ,'inner','outer' df3=pd.DataFrame({'亮度':[1,3,5],'色度':[5,0,3]},index=list('abc'))df4=pd.DataFrame({'饱和度':[1,9,8],'对比度':[6,6,7]},index=list('cde'))print(df3.join(df4,how='outer'))'''打印:亮度 色度 饱和度 对比度a 1.0 5.0 NaN NaNb 3.0 0.0 NaN NaNc 5.0 3.0 1.0 6.0d NaN NaN 9.0 6.0e NaN NaN 8.0 7.0'''print(df3.join(df4,how='left'))'''打印:亮度 色度 饱和度 对比度a 1 5 NaN NaNb 3 0 NaN NaNc 5 3 1.0 6.0'''print(df3.join(df4,how='inner'))'''亮度 色度 饱和度 对比度c 5 3 1 6'''#数据的合并:merge'''类似sql中的连接查询,on是连接字段,how='left' ,'right' ,'inner','outer' ,suffixes为两个DataFrame相同字段重命名规则。on也可以指定多个字段,指定多个字段时,只有多个字段全部一样的条目才会组合到一起on也可以区分left_on和right_on,比如pd.merge(df5,df6,left_on='名字',right_on='姓名'),应对合并DataFrame字段名字不一样的情况'''print('*'*30)df5=pd.DataFrame({'名字':list('abcde'),'性别':['男','女','男','男','女'],'职称':['副教授','讲师','助教','教授','助教']},index=range(1001,1006))print(df5)'''打印:名字 性别 职称1001 a 男 副教授1002 b 女 讲师1003 c 男 助教1004 d 男 教授1005 e 女 助教'''df6=pd.DataFrame({'名字':list('abdax'),'课程':['C++','计算机导论','汇编','数据结构','马克思原理'],'职称':['副教授','讲师','教授','副教授','讲师']},index=[1001,1002,1004,1001,6001])print('*'*30)print(df6)'''打印:姓名课程 职称1001 a C++ 副教授1002 b 计算机导论 讲师1004 d汇编 教授1001 a 数据结构 副教授6001 x 马克思原理 讲师'''print(pd.merge(df5,df6,on=['名字'],how='inner' ,suffixes=['_df1','_df2']))'''打印:名字 性别 职称_df1课程 职称_df20 a 男 副教授 C++ 副教授1 a 男 副教授 数据结构 副教授2 b 女讲师 计算机导论讲师3 d 男教授汇编教授'''print(pd.merge(df5,df6,on=['名字'],how='outer' ,suffixes=['_df1','_df2']))'''打印:名字 性别 职称_df1课程 职称_df20 a 男 副教授 C++ 副教授1 a 男 副教授 数据结构 副教授2 b 女讲师 计算机导论讲师3 c 男助教 NaN NaN4 d 男教授汇编教授5 e 女助教 NaN NaN6 x NaN NaN 马克思原理讲师'''print(pd.merge(df5,df6,on=['名字','职称'],how='left'))'''名字 性别 职称课程0 a 男 副教授 C++1 a 男 副教授 数据结构2 b 女 讲师 计算机导论3 c 男 助教 NaN4 d 男 教授汇编5 e 女 助教 NaN'''

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。