在不同类型的多个列上合并两个 pandas 数据框

Merge two pandas dataframes on multiple columns of different types

我有两个 pandas 数据框,它们有很多共享键列,但是它们可能会以不同的数据类型报告,例如,一个 ID 可以在一个数据框中报告为 int,而在另一个和 pandas 合并似乎不喜欢合并时那样。

我来自 R,通常通过将列粘贴在一起以创建匹配变量作为字符串(实际上不必创建和存储该列)来解决这个问题,如下所示:

df1$new_col = df2$new_col[match(paste(df1$pk1,df1$pk2,df1$pk3,sep='-'),paste(df2$pk1,df2$pk2,df2$pk3,sep='-'))]

有什么方法可以在 pandas 中做类似的事情吗?

我只是按照您的逻辑将 R 转换为 pandas

df1.assign(Newkey=df1.pk1.astype(str)+'-'+df1.pk2.astype(str)+'-'+df1.pk3.astype(str)).merge(df2.assign(Newkey=df2.pk1.astype(str)+'-'+df2.pk2.astype(str)+'-'+df2.pk3.astype(str))[['Newkey','new_col']])