Объект Python группы Python Применение метода дублирует первую группу
Мой первый вопрос SO: меня смущает такое поведение метода применения groupby в pandas (0.12.0-4), которое, кажется, применяет функцию ДВАЖДЫ к первой строке фрейма данных. Например:
>>> from pandas import Series, DataFrame
>>> import pandas as pd
>>> df = pd.DataFrame({'class': ['A', 'B', 'C'], 'count':[1,0,2]})
>>> print(df)
class count
0 A 1
1 B 0
2 C 2
Сначала я проверяю, что функция groupby работает нормально, и, кажется, все в порядке:
>>> for group in df.groupby('class', group_keys = True):
>>> print(group)
('A', class count
0 A 1)
('B', class count
1 B 0)
('C', class count
2 C 2)
Затем я пытаюсь сделать нечто подобное, используя apply для объекта groupby, и дважды получаю вывод первой строки:
>>> def checkit(group):
>>> print(group)
>>> df.groupby('class', group_keys = True).apply(checkit)
class count
0 A 1
class count
0 A 1
class count
1 B 0
class count
2 C 2
Любая помощь будет оценена! Благодарю.
Изменить: @Jeff дает ответ ниже. Я плотный и не сразу понял, так что вот простой пример, чтобы показать, что, несмотря на двойную распечатку первой группы в примере выше, метод apply работает только один раз для первой группы и не изменяет исходный фрейм данных :
>>> def addone(group):
>>> group['count'] += 1
>>> return group
>>> df.groupby('class', group_keys = True).apply(addone)
>>> print(df)
class count
0 A 1
1 B 0
2 C 2
Но назначая возврат метода новому объекту, мы видим, что он работает как ожидалось:
df2 = df.groupby ('class', group_keys = True) .apply (addone) print (df2)
class count
0 A 2
1 B 1
2 C 3