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次),并且要丢弃的类/字母组合的选择是随机的(但保持字母值的一致性)
我尝试过使用,但它不适用于多索引。
对于类似的问题,我找到的所有可能的解决方案都是在一个类的所有条目上随机抽样,忽略类字母分组
这方面有什么想法/经验吗