python:从特定列的和等于x的Dataframe中选择随机行

ddarikpa  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(324)

我有这个Dataframe:

class number_of_lessons
0   C   15
1   A   5
2   B   8
3   E   11
4   N   12
5   F   5
6   D   10

我想从这个表中随机选择一些行,比如新Dataframe中的课程数总和等于20。
作为输出示例,我们可以得到:

class number_of_lessons
0   C   15
1   A   5

或者

class number_of_lessons
1   A   5
5   F   5
6   D   10

我试了太多的东西,但没有一件是正确的。你知道怎么做吗?

sd2nnvve

sd2nnvve1#

尝试下一个代码:

df = pd.DataFrame({'class': ['C', 'A', 'B', 'E', 'N', 'F', 'D'],  'number_of_lessons':[15, 5, 8, 11, 12, 5, 10]})

classes = []
lessons = 0
for i in df.sample(frac=1).iterrows():
    if (lessons + i[1]['number_of_lessons']) <= 20:
        lessons += i[1]['number_of_lessons']
        classes.append(i[1]['class'])
    if lessons == 20:
        break

print(df[df['class'].isin(classes)])

输出:

class  number_of_lessons
2     B                  8
4     N                 12

相关问题