Объединение 2 фреймов данных на основе столбца

Ниже приведена одна из моих структур данных:

strike  coi  chgcoi
120     200  20
125     210  15
130     230  12
135     240   9

а другой такой:

strike  poi  chgpoi
125     210  15
130     230  12
135     240   9
140     225  12

Я хочу:

strike  coi chgcoi  strike  poi  chgpoi
120     200 20      120       0    0
125     210 15      125     210   15
130     230 12      130     230   12
135     240  9      135     240    9
140       0  0      140     225   12

@enke - Ну, я объединил 2 фрейма данных, и в результате получилось следующее. Я не знал о merge. По логике это не должно повторяться.

John 17.03.2022 18:04
Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
37
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий
db1
strike  coi     chgcoi
0   120     200     20
1   125     210     15
2   130     230     12
3   135     240     9

db2
strike  poi     chgpoi
0   125     210     15
1   130     230     12
2   135     240     9
3   140     225     12


merge = db1.merge(db2,how = "outer",on='strike')
merge
    strike  coi     chgcoi  poi     chgpoi
0   120     200.0   20.0    NaN     NaN
1   125     210.0   15.0    210.0   15.0
2   130     230.0   12.0    230.0   12.0
3   135     240.0   9.0     240.0   9.0
4   140     NaN     NaN     225.0   12.0

merge.fillna(0)
strike  coi     chgcoi  poi     chgpoi
0   120     200.0   20.0    0.0     0.0
1   125     210.0   15.0    210.0   15.0
2   130     230.0   12.0    230.0   12.0
3   135     240.0   9.0     240.0   9.0
4   140     0.0     0.0     225.0   12.0

Это ваш ожидаемый результат с той лишь разницей, что "страйк" не повторяется

Во-первых, вам нужно создать два фрейма данных, используя pandas

df1 = pd.Dataframe({'column_1': [val_1, val_2, ..., val_n], 'column_2':[val_1, val_2, ..., val_n]})
df2 = pd.Dataframe({'column_1': [val_1, val_2, ..., val_n], 'column_2':[val_1, val_2, ..., val_n]})

Затем вы можете использовать внешнее соединение

df1.merge(df2, on='common_column_name', how='outer')

Спасибо. Но примет приведенный ниже ответ как правильный пример.

John 17.03.2022 18:06

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