如何将 DF1 中的索引值获取到 DF1 的列值与 DF2 的自定义多索引值匹配的位置?

How can I get the index values in DF1 to where DF1's column values match DF2's custom multiindex values?

我有两个数据框:DF1 和 DF2。
DF2 本质上是 DF1 中随机生成的行子集。 我想获取 DF1 中所有列值完全匹配的行的(整数)索引。
我正在尝试使用多索引来做到这一点: 所以如果我有以下内容:

DF1:

Index  Name  Age   Gender  Label

0      Kate   24     F     1

1      Bill   23     M     0

2      Bob    22     M     0

3      Billy  21     M     0

DF2:

MultiIndex      Name  Age   Gender   Label

(Bob,22,M)      Bob    22     M      0

(Billy,21,M)    Billy  21     M      0

期望输出:[2,3]

如何使用 DF2 中的 MultiIndex 来检查 DF1 中的匹配项? 我在搜索时发现了这个,但我认为这需要您事先指定您想要的值?我找不到这个确切的用例。

df2.loc[(df2.index.get_level_values("Name" =='xxx') & 
        (df2.index.get_level_values('Age') == x & 
        (df2.index.get_level_values('Gender') == x)]

请告诉我最好的方法。 谢谢!

编辑(生成 df1 的代码): 伪代码:合并两个数据帧以获得总共 10 列和 删除除 4 列以外的所有内容 编辑(生成 df2 的代码):

if amount_needed - len(lowest_value_keys) > 0: 
    extra_samples = df1[df1.Label==0].sample(n=amount_needed -len(lowest_value_keys) ,replace=False)
    lowest_value_df = pd.DataFrame(data = lower_value_keys, columns = ["Name", 'Age','Gender'])
    samples = pd.concat([lowest_value_df, extra_samples])
    samples.index = pd.MultiIndex.from_frame(samples [["Name", 'Age','Gender']])

else:  
    all_samples  = pd.DataFrame(data = lower_value_keys, columns = ["Name", 'Age','Gender']) 
    samples = all_samples.sample(n=amount_needed,replace=False)
    samples.index = pd.MultiIndex.from_frame(samples [["Name", 'Age','Gender']])

不确定这是否回答了您的查询,但如果我们首先重置 df1 的索引以将其作为另一列 'Index',然后 set_index 在姓名、年龄、性别上找到在 df2 上匹配并仅采用生成的索引列是否可行?

那就是:

df1.reset_index().set_index(['Name','Age','Gender']).loc[df2.set_index(['Name','Age','Gender']).index]['Index'].values