Как объединить/объединить два кадра данных с разной длиной столбца?

У меня проблема с объединением или объединением двух фреймов данных с разной длиной столбца. Ниже два кадра данных имеют три одинаковых имени столбца, а 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, поэтому не совсем понимаю, как я использую этот сайт. Итак... поймите меня :^) Спасибо за помощь.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
0
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Спасибо за ответ. Но соответствие имени и данных столбца очень важно, и это означает, что переиндексация — не лучший способ решить мою проблему. Но ваш комментарий - мой первый ответ. Большое спасибо!

user23477807 25.02.2024 14:15

Другие вопросы по теме