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

时间:2018-06-25 22:10:24

标签: python r pandas merge matching

我有两个具有很多共享键列的熊猫数据帧,但是它们可能以不同的数据类型报告,例如,一个数据帧中的ID可能被报告为int值,而另一个数据帧中则是一个字符串,并且熊猫会合并合并时似乎不喜欢这样。

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

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

有没有办法在熊猫中做类似的事情?

1 个答案:

答案 0 :(得分:1)

我只是将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']])