Присоединяйтесь к 2 кадрам данных Pandas в определенных столбцах с учетом nan

У меня есть 2 pandas DataFrames dfA и dfB с столбцами и строками X и Y.

Мне нужно добавить dfB на dfA, создав dfC. Мне нужно, чтобы добавление было в столбцах с именами столбцов как в dfA, так и в dfB.

Более того, если имя столбца в dfA не появляется в dfB, то dfC должен содержать значения Nan.


Для упрощения,

dfA выглядит так,

    c1   c2   c3
0  AX1  AX2  AX3
1  AY1  AY2  AY3
2  AZ1  AZ2  AZ3

в то время как dfB выглядит так,

    c1   c2   c4
0  BX1  BX2  BX3
1  BY1  BY2  BY3
2  BZ1  BZ2  BZ3

так, что dfC должен выглядеть,

    c1   c2   c3
0  AX1  AX2  AX3
1  AY1  AY2  AY3
2  AZ1  AZ2  AZ3
3  BX1  BX2  Nan
4  BY1  BY2  Nan
5  BZ1  BZ2  Nan     

Как мне это сделать?

Почему в 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
25
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

попробуй это,

pd.concat([dfA,dfB[['c1','c2']]])

Чтобы избежать жесткого кодирования столбцов

попробуй это,

inter=list(set(dfA.columns)&set(dfB.columns))
print pd.concat([dfA,dfB[inter]])

Спасибо, но с ответом @ jezrael мне не нужно проверять имена столбцов.

LucSpan 23.11.2018 12:43
Ответ принят как подходящий

Используйте concat и отфильтруйте столбцы dfA:

df = pd.concat([dfA, dfB])[dfA.columns]

Или отфильтруйте столбцы по intersection:

cols = dfA.columns.intersection(dfB.columns)
df = pd.concat([dfA, dfB[cols]])

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