Результат df.groupby(...)
не является DataFrame. Чтобы вернуть DataFrame, вам нужно применить функцию к каждой группе, преобразовать каждый элемент группы или фильтровать группы.
Кажется, что вам нужен DataFrame, содержащий (1) все ваши оригинальные данные в df
и (2) подсчет количества данных в каждой группе. Эти вещи имеют разную длину, поэтому, если им нужно зайти в один и тот же DataFrame, вам нужно будет перечислять размер избыточно, т. Е. Для каждой строки в каждой группе.
df['size'] = df.groupby(['A','B']).transform(np.size)
(Кроме этого: это полезно, если вы можете показать сжатый ввод проб и ожидаемые результаты.)
Вы никогда не войдете в проверку условия while(n < 2)
во время выполнения предыдущей проверки условия или return n
. то есть. он зацикливается на while (n > 8)
, когда условие истинно, или return n
выполняется, когда условие не выполняется. Поэтому он никогда не выполнит вторую проверку условия while (n < 2)
.
Попробуйте реализовать логическое ИЛИ в одном цикле while, как показано ниже
int between_2_and_8(string prompt)
{
int n;
do
{
n = get_int("%s", prompt);
}
while (n < 3 || n > 8);// Loops around until n is either less than 2 or greater than 8
return n;
}
Редактировать : Исправления, сделанные при проверке состояния