Python 熊猫:根据目标样本大小将数据分组为单独的部分

Python 熊猫:根据目标样本大小将数据分组为单独的部分,python,pandas,Python,Pandas,我正在尝试根据具有目标样本大小的列的值将pandas数据帧拆分为不同的组。下面的数据帧示例: Rating Result 1 25 2 24 5 20 5 21 6 18 7 20 假设我想把上面的数据框分成不同的类别,这样每个组包含2行值,并根据评级的值将其分开 因此,前两行有两个最低的评分,这将使他们在自己的组。第2组为5级和5级,第3组和最后一组为6级和7级 这

我正在尝试根据具有目标样本大小的列的值将pandas数据帧拆分为不同的组。下面的数据帧示例:

Rating     Result
1           25
2           24
5           20
5           21
6           18
7           20
假设我想把上面的数据框分成不同的类别,这样每个组包含2行值,并根据评级的值将其分开

因此,前两行有两个最低的评分,这将使他们在自己的组。第2组为5级和5级,第3组和最后一组为6级和7级

这将允许我查看不同评级组的平均结果

我目前试图处理这个任务的方式是通过一个原始循环,在这个循环中我硬编码了一些初始值,然后我用一个设定的量扩展参数范围,直到达到所需的样本大小。示例如下:

df = pd.DataFrame(columns=['Rating','Result'],data=[[1,25], [2,24], [5,20], [5,21], [6,18], [7,20]])

initial_rating_threshold = [2,4,6]
targetted_sample_size = 2
paramter_change = 1
for loop_number,original_threshold in enumerate(initial_rating_threshold):
min_threshold = original_threshold-paramter_change*loop_number-2
max_threshold = original_threshold + paramter_change * loop_number
count = len(df.loc[(df['Rating'] >= min_threshold) & (df['Rating'] < max_threshold )])

if count >=targetted_sample_size:
    break
    # This filter provides the dataframe with minimum desired sample size
df=pd.DataFrame(列=['Rating','Result'],数据=[[1,25],[2,24],[5,20],[5,21],[6,18],[7,20])
初始评分阈值=[2,4,6]
目标样本大小=2
参数变化=1
对于循环\u编号,枚举中的原始\u阈值(初始\u评级\u阈值):
最小阈值=原始阈值-参数更改*循环编号-2
最大阈值=原始阈值+参数变化*循环数
计数=len(df.loc[(df['Rating']>=最小阈值)和(df['Rating']<最大阈值)])
如果计数>=目标样本大小:
打破
#此筛选器为数据帧提供所需的最小样本大小
上面的代码基本上完成了这项工作,但是我简化了一点,让它同时调整最小参数值和最大参数值

是否有更有效的方式执行上述代码?理想情况下,它还可以处理多于1的列,并且不需要任何硬编码