合并两个数据帧会在最终数据帧中生成较少的行

时间:2016-12-22 14:57:58

标签: python pandas

我想合并两个数据框,以便将df2的行转换为df1的列。

df1 = 

ID   B
1    3
2    4
3    5

df2 = 
ID   Value
1    ABC
1    ACD
2    WWW

结果应为:

result = 
    ID   B   A_1   A_2
    1    3   ABC   ACD
    2    4   WWW   NaN
    3    5   NaN   NaN

问题是合并后我错过了真实数据集中df1的某些行,而我想保留df1的所有行,即使df2中没有匹配。

df2['col'] = 'A_' + df2.groupby(['ID'])['Value'].cumcount().astype(str)
df2 = df2.pivot(index='ID', columns='col', values='Value').reset_index()
result = pd.merge(df1, df2)

尺寸:

df1 = 1404659 rows
df2 = 1015639 rows
result = 1216773 rows (!!!)

合并两个数据帧的原因可能是数据框result中产生的行数较少?

1 个答案:

答案 0 :(得分:2)

我认为您需要left加入,因为默认inner加入merge

result = pd.merge(df1, df2, how='left')

另一种解决方案是使用join与默认left联接:

result = df1.join(df2)