我改编自Pandas doc的一个例子:
df3 = pd.DataFrame({'X' : ['A', 'B', 'A', 'B'], 'Y' : [1, 4, 3, 2]})
df3.groupby(['X', 'Y']).get_group(('A', 1))
X Y
0 A 1
上面的代码工作正常。
现在,我想根据函数的值对样本进行分组:
def func(df, index):
return (df['X'].loc[index], df['Y'].loc[index] % 2)
分组有效:
for name, df in df3.groupby(by=lambda index: func(df3, index), sort=False):
print(name)
print(df)
('A', 1)
X Y
0 A 1
2 A 3
('B', 0)
X Y
1 B 4
3 B 2
但是get_group()返回错误:
df3.groupby(by=lambda index: func(df3, index), sort=False).get_group(('A', 1))
NotImplementedError:未为MultiIndex定义isna
我可以遍历groupby并将键/值保存在字典中以按名称访问组,但这在内存方面是低效的。