Python 合并两个数据帧会在最终数据帧中生成较少的行
我想合并两个数据帧,以便将Python 合并两个数据帧会在最终数据帧中生成较少的行,python,pandas,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中的一些行,而
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 (!!!)
两个数据帧的合并在数据帧
结果中生成的行数较少的原因可能是什么?我认为您需要左
连接,因为默认情况下内部
连接:
另一种解决方案是与默认的left
join一起使用:
result = df1.join(df2)
result = df1.join(df2)