Решение 1:
# First identify the common SKU's
temp = list(set(list(df1.SKU)).intersection(set(list(df2.SKU))))
# Filter df2 using the list of common SKU's
df3 = df2[df2.SKU.isin(temp)]
print(df3)
SKU Sales
0 A 400
1 B 300
2 C 900
Решение 2: Решение в одну строку
df3 = df2[df2.SKU.isin(list(df1.SKU))]
РЕДАКТИРОВАТЬ 1: Решение для обновленного вопроса (Не оптимальный способ сделать это, но отвечает на вашвопрос)
# reading data for df1
df1= pd.read_clipboard(sep='\\s+')
df1
Company SKU Sales
0 Walmart A 100
1 Total A 200
2 Walmart B 200
3 Total B 300
4 Walmart C 400
5 Walmart D 500
# reading data for df2
df2= pd.read_clipboard(sep='\\s+')
df2
Company SKU Sales
0 Walmart A 400
1 Total B 300
2 Walmart C 900
3 Walmart F 400
4 Total G 500
# Using intersect and zip to create a list of tuples matching in the data frames
temp = list(set(list(zip(df1.Company,df1.SKU))).intersection(set(list(zip(df2.Company,df2.SKU)))))
temp
[('Walmart', 'A'), ('Walmart', 'C'), ('Total', 'B')]
# Creating a helper variable in df2 to lookup in the temp list
df2["temp"] = list(zip(df2.Company,df2.SKU))
df2= df2[df2["temp"].isin(temp)]
del(df2["temp"])
df2
Company SKU Sales
0 Walmart A 400
1 Total B 300
2 Walmart C 900
Приветствуются предложения по улучшению этого кода