#python #pandas #dataframe
Вопрос:
Мне нужно внутреннее соединение 2 фреймов данных с использованием одного и того же ключа, я создал несколько временных фреймов данных при выполнении соединения, приведенный ниже код работает нормально, но мне интересно, есть ли способ сохранить оба столбца ключа соединения при соединении двух нижеприведенных фреймов данных pandas с помощью subj в качестве ключа.
head = [['nationality', 'BART', 'USA']]
body = [['placeOfBirth', 'BART', 'NEWYORK'], ['hasFather', 'BART', 'HOMMER']]
head_df = pd.DataFrame(head, columns = ['pred', 'subj', 'obj'])
body_df = pd.DataFrame(body, columns = ['pred', 'subj', 'obj'])
joined_df = pd.merge(head_df, body1_df, how='inner' ,on='subj')
У меня есть эти два фрейма данных
head_df :
pred subj obj
0 nationality BART USA
body_df :
pred subj obj
0 placeOfBirth BART NEWYORK
1 hasFather BART HOMMER
Я хочу объединить(внутренний) эти 2 кадра данных на основе subj (head_df) и subj (body_df).
Мой желаемый результат таков
pred_x subj_x obj_x pred_y subj_y obj_y
0 nationality BART USA placeOfBirth BART NEWYORK
1 nationality BART USA hasFather BART HOMMER
Спасибо
Комментарии:
1. Как использовать такие дублированные столбцы, если они обязательно будут иметь одинаковое содержимое ? Вы можете просто создать дубликат столбца и переименовать старые / новые столбцы в любом случае.
Ответ №1:
Если вы хотите добавить «_x» и «_y» к меткам столбцов, используйте suffixes
.
joined_df = pd.merge(head_df, body_df, how='inner', on='subj', suffixes=['_x', '_y'])
В результате будет:
pred_x subj obj_x pred_y obj_y
0 nationality BART USA placeOfBirth NEWYORK
1 nationality BART USA hasFather HOMMER
Я не знаю, зачем вам нужны дублированные соединительные столбцы. Как насчет того, чтобы просто скопировать эти столбцы?
joined_df = pd.merge(head_df, body_df, how='inner', on='subj', suffixes=['_x', '_y'])
joined_df.rename(columns={'subj':'subj_x'}, inplace=True)
joined_df['subj_y'] = joined_df['subj_x']
В результате будет:
pred_x subj_x obj_x pred_y obj_y subj_y
0 nationality BART USA placeOfBirth NEWYORK BART
1 nationality BART USA hasFather HOMMER BART