Я хотел бы распределить фиксированное количество часов (в качестве входных данных) между теми строками из кадра данных, которые имеют наилучшую оценку.Мой код следующий:
import numpy as np
import pandas as pd
id = np.array([1022, 1085, 1086, 1090, 1100, 1140, 1173, 1191])
avail = np.array([22, 16, 29, 18, 2, 8, 9, 13])
base = np.array(['bcn','bcn','bio','agp','bcn','bio','bcn','bcn'])
pd.to_numeric(avail)
df = pd.DataFrame(np.column_stack([id, avail, base]), columns=['id', 'avail', 'base'] )
df
df.sort_values('avail', ascending=False)
df = df.astype({"avail": int, "avail": int})
sorteddf = df.sort_values('avail', ascending=False)
sorteddf = sorteddf.assign(hour_extra = 0)
sorteddf
row_num = sorteddf['id'].count()
sorteddf.index = range(0,row_num)
sorteddf

Это примерный набор данных, в котором доступ представляет приоритет.Затем я хотел бы справедливо распределить между ними фиксированное значение «дней».Пример: всего 8 строк.Ввод значения 13 будет означать «1» для каждого и «2» для первых 5.
Мой код, который я пробовал, был следующим:
limit = int(input())
total = sum(sorteddf['hour_extra'])
dataset = enumerate(sorteddf['hour_extra'])
for index, i in dataset:
sorteddf['hour_extra'][index] += 1
if index == limit-1:
break
print(sorteddf['hour_extra'])
Но это просто добавляет 1 значение, что означаетввод 3 дает 1 для первых 3, отлично .. но при вводе 13 он не работает.
Любая идея, как я могу решить это, пожалуйста?Большое спасибо !!!