У меня есть список идентификаторов следующим образом:
new_list = ['id1', 'id2', 'id3']
И я хочу просмотреть список и выполнить для каждого идентификатора группировку его столбцов. Функция select_subset_interval
возвращает определенный фрейм данных для значения i. Реализация этой функции выходит за рамки вопроса.
for i in new_list:
print("**",i,"**")
subset = select_subset(i)
print(subset.groupby(['zone','type'])['counter'].sum())
** id1 **
zone type
Hall IN 245
OUT 0
Room IN 165
** id2 **
zone type
Pool IN 10
OUT 301
** id3 **
zone type
Room IN 165
OUT 0
Я хотел бы, чтобы функция отображала только те группы, сумма переменных счетчика которых равна 0 хотя бы для одного значения типа. То есть для приведенного выше примера я просто хочу, чтобы он показывал следующий результат:
** id1 **
zone type
Hall IN 245
OUT 0
Room IN 165
** id3 **
zone type
Room IN 165
OUT 0
Я хочу напечатать groupby только для идентификаторов, которые содержат хотя бы одну строку с нулевым значением для их переменной счетчика после суммирования. Надеюсь, вы можете мне помочь.
Пример моего фрейма данных:
подмножество пор я = 'id1'
Я БЫ | тип | зона | прилавок |
---|---|---|---|
идентификатор1 | В | Зал | 245 |
идентификатор1 | ИЗ | Зал | 0 |
идентификатор1 | В | Номер | 160 |
идентификатор1 | В | Номер | 5 |
подмножество por i = 'id2'
Я БЫ | тип | зона | прилавок |
---|---|---|---|
идентификатор2 | В | Бассейн | 10 |
идентификатор2 | ИЗ | Бассейн | 301 |
идентификатор2 | ИЗ | Бассейн | 0 |
подмножество пор я = 'id3'
Я БЫ | тип | зона | прилавок |
---|---|---|---|
идентификатор3 | ИЗ | Номер | 0 |
идентификатор3 | ИЗ | Номер | 0 |
идентификатор3 | В | Номер | 140 |
идентификатор3 | В | Номер | 25 |
@richardec Я отредактировал вопрос, добавив пример фрейма данных.
Используйте следующий код в своей функции, чтобы вернуть желаемый результат:
temp = df.groupby(['type', 'zone'])['counter'].sum()
if temp.min() == 0:
return temp
Не могли бы вы предоставить образец вашего фрейма данных?