#python-3.x #pandas
#python-3.x #pandas
Вопрос:
У меня есть два фрейма данных, как показано ниже.
***df1 = pd.DataFrame({'a':[1,1,2,2,3,3], 'b':[1,2,1,2,1,2], 'c':[1,2,4,0,0,2]})***
df1
a b c
0 1 1 1
1 1 2 2
2 2 1 4
3 2 2 0
4 3 1 0
5 3 2 2
***df2 = pd.DataFrame({'a':[1,1,2,2], 'b':[1,2,1,2], 'c':[1,5,6,2]})***
df2
a b c
0 1 1 1
1 1 2 5
2 2 1 6
3 2 2 2
Я хочу применить внутреннее объединение обоих фреймов данных и не хочу, чтобы столбцы из df2, поэтому попробовал с приведенным ниже кодом.
***merged_df = df1.merge(df2, how='inner', left_on=["a", "b"], right_on=["a","b"])***
a b c_x c_y
0 1 1 1 1
1 1 2 2 5
2 2 1 4 6
3 2 2 0 2
из приведенного выше кода без удаления c_x и c_y вручную, есть ли какой-либо способ не объединять правый фрейм данных (df2) в принципе, я хочу все столбцы из df1 и не хочу никаких столбцов из df2 после слияния. Заранее спасибо.
Ответ №1:
Идея заключается в том, чтобы фильтровать только столбцы для слияния здесь a,b
. Если требуется объединение по обоим столбцам on
, параметр следует опустить (тогда панды объединяются путем пересечения столбцов в обоих DataFrames
):
merged_df = df1.merge(df2[["a", "b"]])
работает как:
merged_df = df1.merge(df2[["a", "b"]], on=['a','b'])
Комментарии:
1. отлично, это сработало. merged_df = df1.merge(df2[[«a», «b»]], on=[‘a’, ‘b’])