Как перебрать цикл while - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь найти верхние значения 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]}

Порядок не важен в первой десятке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...