Python 基于复杂条件对数据帧中的行进行分组

Python 基于复杂条件对数据帧中的行进行分组,python,pandas,where-clause,multiple-tables,multi-level,Python,Pandas,Where Clause,Multiple Tables,Multi Level,我有一个基本的数据框架,结构如下: Col1 Ind1 Ind2 0 key1 12 key2 35 1 key3 56 key4 24 key5 65 ColA 0 key1 1 else 2 else 3 key3 …还有一个像这样的: Col1 Ind1 Ind2 0 key1 12 key2 35 1 k

我有一个基本的数据框架,结构如下:

             Col1
Ind1 Ind2
0    key1    12
     key2    35
1    key3    56
     key4    24
     key5    65
    ColA
0   key1
1   else
2   else
3   key3
…还有一个像这样的:

             Col1
Ind1 Ind2
0    key1    12
     key2    35
1    key3    56
     key4    24
     key5    65
    ColA
0   key1
1   else
2   else
3   key3
我需要的是df1的平均值,根据Ind2是否在df2中分组。 这就是我所尝试的,但没有成功;信息是“长度必须匹配才能比较”——但当然,它们不是

df1 = pd.DataFrame({'ind1': [0, 0, 1, 1, 1], 'ind2': ['key1', 'key2', 'key3', 'key4', 'key5'], 'col1': [12, 35, 56, 24, 65]}, )
df1.set_index(['ind1', 'ind2'], inplace=True)
df2 = pd.DataFrame({'ColA': ['key1', 'else', 'else', 'key3']})

print (df1.groupby(df1.index.levels[1] in df2.get_values()).mean())

提前感谢您的任何提示

您实际上想要检查
df1.index.levels[1]
的元素是否在
df2.ColA
中(因为您需要为每一行指定一个值)。你写的语法不会让你明白这一点。相反,你应该试试看

df1.groupby(df1.index.levels[1].isin(df2.ColA)).mean()
请注意
isin
函数,它为每个元素返回
True
/
False
,以及我直接引用
df2.ColA
,因为它是包含值的列(相反,引用
df2
将在
df2
的列名中搜索值)