Python:从数据框中选择特定列的总和等于X的随机行

时间:2020-06-08 17:10:26

标签: python sql 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

我想从该表中随机选择一些行,例如新数据框中的课程总数为20。

作为输出示例,我们可以:

   class number_of_lessons
0   C   15
1   A   5

class number_of_lessons
1   A   5
5   F   5
6   D   10

我尝试了太多的事情,但是没有什么是正确的。知道怎么做吗?

1 个答案:

答案 0 :(得分:0)

尝试下一个代码:

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