我正在尝试合并 2 个数据集 X 和 Y。数据集 X 具有包含重复值的连接键列。数据集 Y 具有连接键列和一个附加列。数据集图像已在下面上传。问题是由于数据集 X 中存在重复项,我想避免笛卡尔积。我在下面附上了结果数据集图像。这可以通过使用 for 循环手动合并来手动完成,但这很耗时。谁能提供更好的方法
最佳答案
使用@Alollz 设置:
df_x = pd.DataFrame({'EMM_ID': [610462, 610462, 610462, 610462, 61000, 61000],
'ID_home': [np.NaN, np.NaN, np.NaN, np.NaN, np.NaN, np.NaN]})
df_y = pd.DataFrame({'EMM_ID': [610462, 61000], 'ID_home': [81000, 18]})
您可以创建一个新的“ key ”来加入 cumcount。
colkey = 'EMM_ID'
df_x = df_x.assign(colkey=df_x.groupby(colkey).cumcount())
df_y = df_y.assign(colkey=df_y.groupby(colkey).cumcount())
df_x[['EMM_ID','colkey']].merge(df_y, on=['EMM_ID','colkey'], how='left')
输出:
EMM_ID colkey ID_home
0 610462 0 81000.0
1 610462 1 NaN
2 610462 2 NaN
3 610462 3 NaN
4 61000 0 18.0
5 61000 1 NaN
关于python - 在 Pandas Python 中合并时如何避免笛卡尔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52277872/