Python平衡多索引数据

Python平衡多索引数据,python,dataframe,multi-index,balance,Python,Dataframe,Multi Index,Balance,我有一个数据帧,其结构如示例中所示: import pandas as pd import numpy as np df = {'class': [1, 1, 1, 2, 2, 1, 1, 3, 3, 3, 2, 2], 'letter': ['a', 'a', 'a', 'b', 'b', 'c', 'c', 'd', 'd', 'd', 'e', 'e'], 'value1': [0.97, 0.43, 0.67, 0.02, 0.75, 0.34, 0.43, 0

我有一个数据帧,其结构如示例中所示:

import pandas as pd
import numpy as np

df = {'class': [1, 1, 1, 2, 2, 1, 1, 3, 3, 3, 2, 2],
      'letter': ['a', 'a', 'a', 'b', 'b', 'c', 'c', 'd', 'd', 'd', 'e', 'e'],
      'value1': [0.97, 0.43, 0.67, 0.02, 0.75, 0.34, 0.43, 0.36, 0.40, 0.92, 0.95, 0.64],
      'value2': [0.16,  0.83, 0.62, 0.2, 0.48, 0.36, 0.67, 0.91, 0.9, 0.75, 0.5, 0.99],
      }
df = pd.DataFrame(df).set_index(['number', 'letter'])

print(df)
               value1  value2
class  letter                
1      a         0.97    0.16
       a         0.43    0.83
       a         0.67    0.62
2      b         0.02    0.20
       b         0.75    0.48
1      c         0.34    0.36
       c         0.43    0.67
3      d         0.36    0.91
       d         0.40    0.90
       d         0.92    0.75
2      e         0.95    0.50
       e         0.64    0.99
我想根据相同类别组的最小出现次数(N)(在示例中,类别3,仅出现N=1次)随机平衡它。 在这种情况下,我的预期结果可能是这样的:

               value1  value2
class  letter                
1      a         0.97    0.16
       a         0.43    0.83
       a         0.67    0.62
2      e         0.95    0.50
       e         0.64    0.99
3      d         0.36    0.91
       d         0.40    0.90
       d         0.92    0.75
其中,每个类出现N次(在本例中为1次),并且要丢弃的类/字母组合的选择是随机的(但保持字母值的一致性)

我尝试过使用,但它不适用于多索引。 对于类似的问题,我找到的所有可能的解决方案都是在一个类的所有条目上随机抽样,忽略类字母分组

这方面有什么想法/经验吗