(вложенный l oop) для каждого идентификатора, выберите 5-10 случайных записей в течение каждого месяца - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь уменьшить размер данных, поэтому у меня возникли следующие условия: для каждого месяца я только хочу случайным образом выбирать от 5 до 10 записей продаж каждого дилера (дилеров с уникальным идентификатором). Данные выглядят так:

   Date | Product  | Revenue | Dealer ID
Jan 7,18| XXX      | 10      | 1212
Jan 7,18| YYY      | 13      | 1212
Jan 7,18| XXX      | 20      | 2500
Jan 7,18| ZZZ      | 5       | 1212
....
Jan 8,18| ZZZ      | 15      | 1212
Jan 8,18| AAA      | 17      | 2500
Jan 8,18| MMM      | 9       | 1318
...

, а выходные данные о продажах в январе должны выглядеть следующим образом:

   Date  | Product  | Revenue | Dealer ID
Jan 7,18 | XXX      | 10      | 1212
Jan 7,18 | ZZZ      | 5       | 1212
Jan 10,18| ZZZ      | 15      | 1212
Jan 17,18| AAA      | 17      | 1212
Jan 22,18| MMM      | 9       | 1212
Jan 27,18| ZZZ      | 15      | 1212
Jan 28,18| MMM      | 9       | 1212

...

Я бы написал вложенное значение для l oop. для каждого идентификатора дилера для каждого месяца случайным образом выбирайте n записей. n - случайное число от 5 до 10. Я не совсем уверен, как l oop через месяцы, и не могу найти способ получить случайные записи ..

У кого-нибудь есть более простой способ сделать эту задачу? Вот моя попытка:

unique_ID = np.unique(df['Dealer ID'].sort_values(ascending=True))
months = ["January", "Feburary", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
years = range(2018, 2022)
for y in years:
    for m in months:
        for i in unique_ID:
            if df['Dealer ID'] == i: 'have to loop through the file and pick out all the entries with that Dealer ID'
                'create a list to store them'
                'and then randomly select 8 entries from each of the dealer'
...