В чем разница в следующих двух операторах groupby () в pandas? - PullRequest
1 голос
/ 04 апреля 2020

Я прохожу курс Data Science от Coursera.

Этот вопрос касается метода groupby (). Я попробовал примеры, которыми поделился репетитор, а затем внес свои изменения. Я думал, что обе версии (оригинальная и измененная) должны иметь одинаковый результат, но это не так. Единственное отличие, которое я сделал, - это удаление set_index ('STNAME') , которое, как я думал, не должно иметь значения, поскольку существует только один единственный индекс, и поскольку у меня есть groupby (level = 0) это должно быть все. Что не так, что я не понимаю о set_index (..) здесь?

Оригинал

df.set_index('STNAME').groupby(level=0)['POPESTIMATE2010','POPESTIMATE2011'].agg({'avg': np.average, 'sum': np.sum})

Изменено

df.groupby(level=0)['POPESTIMATE2010','POPESTIMATE2011'].agg({'avg': np.average, 'sum': np.sum})

1 Ответ

1 голос
/ 04 апреля 2020

Первый, вы groupby STNAME, который является вашим исходным индексом.

Для второго вы groupby индекс диапазона, который делает размер каждой группы 1

df=pd.DataFrame({"A":[1,2,3,4,5]},index=[1,1,2,2,2])
df.groupby(level=0).sum()
    A
1   3
2  12
df.reset_index().groupby(level=0).sum()
   index  A
0      1  1
1      1  2
2      2  3
3      2  4
4      2  5
...