Я понимаю, что передача функции в качестве группового ключа вызывает функцию один раз для каждого значения индекса, а возвращаемые значения используются в качестве имен групп. Что я не могу понять, так это как вызывать функцию для значений столбцов.
Так что я могу сделать это:
people = pd.DataFrame(np.random.randn(5, 5),
columns=['a', 'b', 'c', 'd', 'e'],
index=['Joe', 'Steve', 'Wes', 'Jim', 'Travis'])
def GroupFunc(x):
if len(x) > 3:
return 'Group1'
else:
return 'Group2'
people.groupby(GroupFunc).sum()
Это разбивает данные на две группы, одна из которых имеет значения индекса длиной 3 или менее, а другая - длиной три или более. Но как я могу передать одно из значений столбца? Так, например, если значение столбца d для каждой точки индекса больше 1. Я понимаю, что мог бы просто сделать следующее:
people.groupby(people.a > 1).sum()
Но я хочу знать, как сделать это в пользовательской функции для дальнейшего использования.
Что-то вроде:
def GroupColFunc(x):
if x > 1:
return 'Group1'
else:
return 'Group2'
Но как я это называю? Я старался
people.groupby(GroupColFunc(people.a))
и подобные варианты, но это не работает.
Как передать значения столбца в функцию? Как бы я передал несколько значений столбцов, например, для группы, например, people.a> people.b?