Я пытаюсь найти верхние значения Isbns для каждой категории (скажем, 3) идентификаторов библиотек на основе количества в третьем столбце.Нужна помощь с логикой.
Это для системы рекомендаций, которая перечисляет лучшие книги в онлайн-библиотеке на основе количества проверок постоянными посетителями.У меня есть фрейм данных, из которого я enter code here
получаю эту информацию.
curr.execute("SELECT c.LibraryID, o.ISBN, count(c.ItemID) FROM
CheckoutTransactionArchive c left join OMNI o ON c.ItemID = o.BTKey
WHERE cast(ActionStartDate as Date) between '20170101' and
'20181231' GROUP BY c.LibraryID, o.ISBN ORDER BY c.LibraryID,
o.ISBN;")
inputrows = pd.DataFrame(curr.fetchall())
inputrows.columns = ["LibraryID", "ISBN", "Checkout count"]
inputrows = inputrows.head(20000)
test_dict = {}
j = 1
i=0
while i< len(inputrows):
library_id = inputrows.iloc[i,0]
next_library_id = inputrows.iloc[i+1, 0]
isbns = []
counts = []
while next_library_id == library_id :
isbn = inputrows.iloc[j, 1]
count = inputrows.iloc[j, 2]
isbns.append(isbn)
counts.append(count)
next_library_id = inputrows.iloc[j, 0]
library_id = inputrows.iloc[i,0]
j+=1
i+=1
if next_library_id != library_id:
i+=1
j+=1
Фрейм данных выглядит следующим образом:
LibraryID ISBN COUNT
1 1 3
1 2 2
1 3 1
1 4 3
1 5 3
1 6 34
2 7 3
2 8 12
2 9 10
3 10 3
4 11 1
4 12 3
Я хочу словарь на Python с ключом LibraryID в качестве ключа изначения превысят n ISBNS на основе количества.Например, здесь словарь будет выглядеть следующим образом.для макс. трех лучших книг
{1: [6,5,4],
2: [9,8,7],
3:[10],
4 : [11,12]}
Порядок не важен в первой десятке.