合并具有不同行的熊猫数据框? [复制]

Posted

技术标签:

【中文标题】合并具有不同行的熊猫数据框? [复制]【英文标题】:merge pandas dataframe with varying rows? [duplicate] 【发布时间】: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) 【参考方案1】:

您必须在'First' 列上合并:

pd.merge(mydata[0], mydata[1], on='First').merge(mydata[2], on='First')

得到:

   First Second  Third  Fourth  Fifth
0    500   Sone    0.5    Fone     23
1    500   Sone    0.5    Ftwo     24
2    500   Sone    0.5  Fthree     25
3    500   Sone    0.6    Fone     23
4    500   Sone    0.6    Ftwo     24
5    500   Sone    0.6  Fthree     25

只是 FourthFifth 列仍然在此处对齐,而您的 merge_df 数据框中没有...

【讨论】:

或者检查from functools import reduce merged_df = reduce(lambda left,right: pd.merge(left,right,on=['First'], how='outer'), mydata) print (merged_df)的欺骗 这两个都是很棒的解决方案,太好了,谢谢

以上是关于合并具有不同行的熊猫数据框? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

每次合并具有不同列名的熊猫数据框列表

具有两个以上数据框的熊猫的外部合并[重复]

合并两个具有相同列名但在熊猫中列数不同的数据框

合并具有非唯一索引的多个熊猫数据集

熊猫多索引数据框合并问题

合并两个具有共同值的熊猫数据框,这些数据框在一个数据框中显示为列,而在另一个数据框中显示为行