Объединить два кадра данных панд на нескольких столбцах разных типов - PullRequest
0 голосов
/ 26 июня 2018

У меня есть два кадра данных pandas, которые имеют много столбцов общего ключа, однако они могут быть представлены в разных типах данных, например, идентификатор может быть представлен как 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 голосов
/ 26 июня 2018

Я просто делаю преобразование 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']])
...