Найти количество столбцов в кадре данных pandas на основе условия - PullRequest
0 голосов
/ 12 февраля 2019

Я использую метод ниже, чтобы найти количество кадров данных панд, имеющих 55 тыс. Строк.Это включено в цикл для списка сайтов (4000 сайтов).Это займет много минут, чтобы завершить цикл из 4000 сайтов, если включена нижняя строка.

for i in g_sitelist:
   x = len(dfreglist[(dfreglist['site'] == i) & (dfreglist['isactive'] == 1)])

Есть ли другой лучший способ сделать так, чтобы цикл мог завершиться за секунду.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Вы можете использовать value_counts():

site_counts = dfreglist[dfreglist['isactive'].eq(1)]['site'].value_counts()

Это даст последовательность активных значений site и счетчика, которые затем можно будет повторить.

0 голосов
/ 12 февраля 2019

Использовать numpy - преобразовать каждый столбец в массив и вызвать np.sum:

m = (dfreglist['isactive'].values == 1)
for i in g_sitelist:
   x = np.sum((dfreglist['site'].values == i) & m)

Более быстрое решение:

df = dfreglist[dfreglist['site'].isin(g_sitelist) & (dfreglist['isactive'].values == 1)]

out = df['site'].value_counts() 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...