【发布时间】:2020-08-21 01:22:56
【问题描述】:
我有 3 个 pandas 数据框,每个都有不同的行数和一些相似的列,我需要将所有数据与所有数据合并
mydata = [0]*3
dataA = {'First': [500],'Second': ['Sone']}
mydata[0] = pd.DataFrame(dataA,columns=['First','Second'])
dataB = {'First': [500,500],'Third': [0.5,0.6]}
mydata[1] = pd.DataFrame(dataB,columns=['First','Third'])
dataC = {'First': [500,500,500],'Fourth': ['Fone', 'Ftwo','Fthree'],'Fifth': [23, 24, 25]}
mydata[2] = pd.DataFrame(dataC,columns=['First','Fourth','Fifth'])
合并后的数据看起来像
merge_data = {'First': [500,500,500,500,500,500],'Second': ['Sone','Sone','Sone','Sone','Sone','Sone'],'Third': [0.5,0.6,0.5,0.6,0.5,0.6],'Fourth': ['Fone', 'Fone', 'Ftwo', 'Ftwo', 'Fthree','Fthree'],'Fifth': [23, 23, 24, 24, 25, 25]}
merge_df = pd.DataFrame(merge_data,columns=['First','Second','Third','Fourth','Fifth'])
数据追加产生南行
merge_data = mydata[0].copy()
for i in np.arange(1, len(mydata)):
merge_data = merge_data.append(mydata[i], sort=False)
合并丢失行
merge_data = pd.merge(mydata[0], mydata[1], left_index=True, right_index=True)
是否可以合并为merged_df
【问题讨论】:
-
使用
from functools import reduce merged_df = reduce(lambda left,right: pd.merge(left,right,on=['First'], how='outer'), mydata) print (merged_df)