1,join方法
dataframe内置了join方法是一种快速合并的方法。它默认以index作为对齐的列。
1.1 how参数
join中的how参数和merge中的how参数一样,用来指定表合并保留数据的规则。
1 import pandas as pd 2 df1 = pd.DataFrame([[1,2,3],[1,10,20],[5,6,7],[3,9,0],[8,0,3]],columns=['x1','x2','x3']) 3 df2 = pd.DataFrame([[1,2],[1,10],[1,3],[4,6],[3,9]],columns=['x1','x4']) 4 print (df1) 5 print (df2) 6 df3 = pd.merge(df1,df2,how = 'left',on='x1') 7 print (df3) 8 df4 = pd.merge(df1,df2,how = 'right',on='x1') 9 print (df4) 10 df5 = pd.merge(df1,df2,how = 'inner',on='x1') 11 print (df5) 12 df6 = pd.merge(df1,df2,how = 'outer',on='x1') 13 print (df6)
结果如下:
1.2 on参数
在实际应用中如果右表的索引是左表的某一列的值,这时可以将右表的索引和
左表的列对齐合并这样的灵活方式进行合并。
left = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3'],'key': ['K0', 'K1', 'K0', 'K1']})
right = pd.DataFrame({'C': ['C0', 'C1'],'D': ['D0', 'D1']},index=['K0', 'K1'])
result=left.join(right,on='key')
2, suffix 后缀参数
如果和表合并的过程中遇到有一列两个表都同名,合并的时候又都想保留下俩
,就可以用suffixes给每个表的重复列名增加后缀
result=pd.merge(left,right,on='k',suffixes=['_l','_r'])
注:lsuffix和rsuffix分别指定左表的后缀和右表的后缀。
3,组合多个dataframe
一次组合多个dataframe的时候可以传入元素为dataframe的列表或者tuple。
right2 =pd.dataframe({'v':[7,8,9]},index=['k1','k1','k2'])
result=left.join([right,roght2])
4,更新表的nan值
combine_first
如果一个表nan值,在另一个表相同位置(相同索引和相同列)可以找到,
则可以通过combline_first来更新数据
update
如果要用一张表中的数据来更新另一张表的数据则可以用update来实现
combine_first和update的区别
使用combine_first只会更新左表的nan值。而update则会更新左表的所有能在
右表中找到的值(两表位置相对应)