Python 将列表传递到Loc

Python 将列表传递到Loc,python,multi-index,loc,isin,Python,Multi Index,Loc,Isin,我有一个数据框,如下所示: tuples = [ ('cobra', 'mark i'), ('cobra', 'mark ii'), ('sidewinder', 'mark i'), ('sidewinder', 'mark ii'), ('viper', 'mark ii'), ('viper', 'mark iii') ] index = pd.MultiIndex.from_tuples(tuples) values = [[12, 2], [0, 4], [10,

我有一个数据框,如下所示:

tuples = [
   ('cobra', 'mark i'), ('cobra', 'mark ii'),
   ('sidewinder', 'mark i'), ('sidewinder', 'mark ii'),
   ('viper', 'mark ii'), ('viper', 'mark iii')
]
index = pd.MultiIndex.from_tuples(tuples)
values = [[12, 2], [0, 4], [10, 20],
        [1, 4], [7, 1], [16, 36]]
df = pd.DataFrame(values, columns=['max_speed', 'shield'], index=index)

index.name = 'name, type'
我试图使用另一个df df2的值来匹配对,并将“屏蔽”值返回到df2中,如下所示:

name = df2['names']
type = df2['type']
components = df2['components']

df2['shield'] = df.loc[(name,type),components]

但是当我尝试在列表变量中传递时收到以下错误

KeyError: 'Passing list-likes to .loc or [] with any missing labels is no longer supported, see https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#deprecate-loc-reindex-listlike'

有没有办法通过列表锁定多个索引?我还尝试通过一个三重for循环加载变量,但这也不起作用。df2有三列
名称
类型
组件
?也许你要找的就是合并。