concatenate、merge与join

concatenate

举例一:

df1= pd.DataFrame({'A':['A0','A1','A2','A3'],
'B':['B0','B1','B2','B3'],
'C':['C0','C1','C2','C3'],
'D':['D0','D1','D2','D3']},
		   index=[0,1,2,3])
df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'], 
'B': ['B4', 'B5', 'B6', 'B7'],                   
'C': ['C4', 'C5', 'C6', 'C7'],              
'D': ['D4', 'D5', 'D6', 'D7']}, 
		    index=[4, 5, 6, 7]) 				
df3 = pd.DataFrame({'A': ['A8', 'A9', 'A10', 'A11'],  
'B': ['B8', 'B9', 'B10', 'B11'], 
'C': ['C8', 'C9', 'C10', 'C11'],            
'D': ['D8', 'D9', 'D10', 'D11']},           
		    index=[8, 9, 10, 11])
pd.concat([df1,df2,df3]) 		                  

在这里插入图片描述
举例二:

df1=pd.DataFrame(np.random.randn(4,2),index=['0101','0102','0103','0104'],columns=['price','return']);
df2=pd.DataFrame(np.random.randn(4,2),index=['0105','0106','0107','0108'],columns=['price','return']);
pd.concat([df1,df2])

在这里插入图片描述
注意:不设定axis时,默认axis=0,concat函数默认以列的方式对齐。

举例三:axis=1

df1=pd.DataFrame(np.random.randn(4,2),index=['0101','0102','0103','0104'],columns=['price','return']);
df2=pd.DataFrame(np.random.randn(4,2),index=['0103','0104','0105','0106'],columns=['price','return']);
pd.concat([df1,df2],axis=1)

在这里插入图片描述
举例四:

N = 'stockA.'
ddf3 = pd.DataFrame(np.random.randn(4,2),
index = ['2018-01-01', '201801-02', '2018-01-03', '2018-01-04'],
columns = [N+'price',N+'return'])
N = 'stockB.' 
ddf4 = pd.DataFrame(np.random.randn(4,2),
index = ['2018-01-03', '201801-04', '2018-01-05', '2018-01-06'],
columns = [N+'price',N+'return']) 
pd.concat([ddf3,ddf4],axis = 1) 
import warnings
warnings.filterwarnings('ignore') 

在这里插入图片描述
将以上代码最后一行改为:

pd.concat([ddf3,ddf4],axis = 1).dropna(how = 'any') 

在这里插入图片描述
将以上代码最后一行改为:

pd.concat([ddf3,ddf4],axis = 1).dropna(how = 'all') 

在这里插入图片描述
注意:how='any’一整行完整时保留这行;how='all’一整行缺失的时候保留这行

将以上代码最后一行改为:

pd.concat([ddf3,ddf4],axis = 1, join='inner') 

在这里插入图片描述
注意:没有规定join是默认join=‘outer’,表示所有这些DataFrame里面有的数据 都要放进来。Join='inner’表示只展示这些数据中共有的数据。
将以上代码最后一行改为:

pd.concat([ddf3,ddf4],axis = 1, join_axes=[ddf4.index]) 

在这里插入图片描述
将以上代码最后一行改为:

pd.concat([ddf3,ddf4], ignore_index = True) 

在这里插入图片描述
注意:在这里ignore_index = True表示忽略每一行的名字,保留每一列的名字。

merge

举例一:

dd1=pd.DataFrame({'A':['A0','A1','A2','A3'],
 'B':['B0','B1','B2','B3'], 
 'C':['C0','C1','C2','C3'], 
 'D':['D0','D1','D2','D3']}) 
 dd2=pd.DataFrame({'E':['E0','E1','E2','E3'],
  'B':['B0','B1','B2','B3'], 
  'F':['F0','F1','F2','F3'], 
  'G':['G0','G1','G2','G3']})
   pd.merge(dd2,dd1,on='A') 

在这里插入图片描述
举例二:

left=pd.DataFrame({'firstname': ['Pool', 'House','Mine','Will'], 'location': [1, 2, 1, 4]})
right=pd.DataFrame({'lastname': ['Henry', 'Jones','Indiana','Jack'], 'location': [1, 2, 3, 5]}) 
pd.merge(left,right,on = 'location') 

在这里插入图片描述
以上代码默认how=‘inner’,改写最后一行代码为:
pd.merge(left,right,on = ‘location’,how = ‘outer’) 或
pd.merge(left,right,on = ‘location’,how = ‘left’) 分别得到:

在这里插入图片描述
在这里插入图片描述

举例三:
以左表格的索引为标准,以及右表格的location为标准,把这个两个表格对 在一起合并起来。

left0=pd.DataFrame({'firstname': ['Pool', 'House','Mine','Will']},
                  index = ['a','a','b','b'])
right0=pd.DataFrame({'lastname': ['Henry', 'Jones','Indiana','Jack'],
                  'location': ['a','b','c','d']})
print(left0)
print(right0)
print(pd.merge(left0,right0,left_index = True, right_on = 'location') )

在这里插入图片描述

join

left = pd.DataFrame({'A': ['A0', 'A1', 'A2'], 
		     'B': ['B0', 'B1', 'B2']},                      
		     index=['K0', 'K1', 'K2'])
right = pd.DataFrame({'C': ['C0', 'C2', 'C3'],          	
		      'D': ['D0', 'D2', 'D3']},        
		      index=['K0', 'K2', 'K3'])
left.join(right) 

在这里插入图片描述
下面这两种用法与merge中的how用法一样:

left.join(right,how='outer')
left.join(right,how='inner')

猜你喜欢

转载自blog.csdn.net/weixin_42107474/article/details/89053481