pandas: понимание списка для создания столбца в существующем фрейме данных

У меня есть один столбец, а другой - datetime, который находится в позиции индекса. Я сделал для этого некоторое кодирование. Я пытаюсь использовать цикл for для условия ниже, но мне нужна оптимизация или понимание списка.

      date_today = datetime.now()
days = pd.date_range(date_today, date_today + timedelta(254), freq='D')
dd = pd.DataFrame()
cc = sorted(np.random.randint(0,32,255))
dd['mean_base'] = cc
dd['time'] = days
dd.set_index('time',inplace=True)
rle = [(k, sum(1 for i in g)) for k,g in itertools.groupby(dd['mean_base'])]
# output Ex: rle = [(66,3),(35,12),(66,185),(35,190)]
count1 = 0 
for i in rle:
    if i[0] >= 65:
        if i[1] >= 185:
            count1 += 1
        else:
            pass
# Suggested by someone
count2 = sum([np.floor(i[1]/rolling_window) for i in rle if i[0]>=1])

# I didn't get this. (May be need changes)
print(count1)
#output: 1

Скриншот

Есть ли другой способ или как я могу использовать понимание списка или оптимизацию кода?

1 ответ

IIUC, вы можете попробовать

      count1 = sum([(i >= 2) and (j >= 32) for i, j in rle])
# or with pandas
count1 = len(pd.DataFrame(rle).loc[lambda df: df[0].ge(2) & df[1].ge(32), :])
Другие вопросы по тегам