У меня проблема с объединением или объединением двух фреймов данных с разной длиной столбца. Ниже два кадра данных имеют три одинаковых имени столбца, а df2 имеет другой столбец.
a = [100, 66, 80]
b = [26, 53, 45]
c = [94, 100, 32]
df1 = pd.DataFrame([a,b,c], columns = ['A', 'C', 'D'])
a = [88, 94, 21, 39]
b = [82, 79, 19, 87]
c = [20, 10, 92, 13]
df2 = pd.DataFrame([a,b,c], columns = ['A', 'B', 'C', 'D'])
Сейчас я хочу объединить два фрейма данных, как показано ниже.
Ожидал
введите сюда описание изображения
Но вывод лайков ниже
Выход
введите сюда описание изображения
Я использовал «pd.concat» и «pd.merge», но ни один из них не работает хорошо.
pd.concat([df1, df2], join = 'outer')
pd.merge(df1, df2, how = 'outer')
Кто-нибудь может дать мне совет, как мне получить таблицу результатов?
Я не программист, и я впервые использую stackoverlow, поэтому не совсем понимаю, как я использую этот сайт. Итак... поймите меня :^) Спасибо за помощь.






Если вас беспокоит только порядок столбцов, вы можете использовать функцию reindex.
new_df = pd.merge(df1, df2, how= 'outer')
new_df = new_df.reindex(columns=['A', 'B', 'C', 'D'])
Это обновит порядок столбцов вашего DataFrame.
Обновлено: я не упомянул о сопоставлении данных, потому что ожидаемый и фактический результат различались только порядком столбцов. Если вы хотите сопоставить строки на основе данных в столбце, вам нужно использовать параметр on:
new_df = pd.merge(df1, df2, how='outer', on=['A', 'C'])
Параметр on должен указывать столбец/список столбцов, данные которых должны совпадать в обоих кадрах данных, чтобы строки считались совпадающими.
Спасибо за ответ. Но соответствие имени и данных столбца очень важно, и это означает, что переиндексация — не лучший способ решить мою проблему. Но ваш комментарий - мой первый ответ. Большое спасибо!