1.要想实现sql中的join,需要使用merge方法,能指定列key。
2.pandas中的join方法,相比merge,只是个弟弟,使用场景有限,相当于concat中的方向为1的合并。
3.concat实现的只是将两个或多个df按行或者案列简单进行拼接的功能,并没有实现sql中的join功能,默认纵向合并。
代码
import pandas as pd
import sqlalchemy
from sqlalchemy import Table,MetaData,ForeignKey,Column,Integer,String,DateTime,Date,Float
# data=pd.read_excel(r'C:Users 44572Downloads制造中心-生产日报初始化 (2).xlsx',header=0,sheet_name='制造中心-生产日报初始化')
# # index为2的那一行数据
# print(data.loc[2])
# # 取出某列列名为预算得率的数据
# print(data[['预算得率']])
#
# df1=pd.DataFrame(data)
# df2=pd.DataFrame(data)
#
# pd.concat([df1,df2])
left =pd.DataFrame({
'key1':['K0','K0','K1','K2'],
'key2': ['K0', 'K1', 'K0', 'K1'],
'A':['A0','A1','A2','A3'],
'B':['B0','B1','B2','B3']
})
right =pd.DataFrame({
'key1':['K0','K1','K1','K2'],
'key2': ['K0', 'K0', 'K0', 'K0'],
'C':['C0','C1','C2','C3'],
'D':['D0','D1','D2','D3']
})
print(left)
print('================merge多键关联后=====================')
result=pd.merge(left, right,on=['key1','key2'],how='left')
print(result)
result.to_csv(r'C:Users 44572Downloadsresult.csv')
#列连接 纵向连接 补全所有字段后union all
print('================补全所有字段后union all=====================')
print(pd.concat([left, right],axis=0))
print('================横向outer join取出所有字段=====================')
print(pd.concat([left, right],axis=1))
print('================concat的内连接=====================')
print(pd.concat([left, right],axis=1,join='inner'))
查看merge多key关联后的结果
最后写出到excel中数据的样子



