Рассмотрим следующие данные, которые очень похожи на Pandas 'Group By Tutorial :
import pandas as pd
import numpy as np
df = pd.DataFrame({'Week' : [1, 2, 1, 2,
1, 2, 1, 1],
'BloodType' : ['A+', 'AB', 'AB', 'B',
'B', 'B+', 'AB', 'AB'],
'C' : np.random.randn(8),
'D' : np.random.randn(8)})
Это дает DataFrame
, который выглядит следующим образом:

Я хочу сгруппировать по "Week"
, а затем применить некоторые операции только к столбцам C
и D
.Поэтому я попытался:
week_group = df.groupby('Week')
week_group.apply(lambda x: x.drop(["BloodType", "Week"], 1))
, который я изначально интерпретировал как для каждого DataFrame
, опустите столбцы "BloodType"
и "Week"
и дайте мне полученную группу.Тем не менее, это дает мне:

Однако я бы ожидал, что это даст мне Group
, где каждый индекс был DataFrame
только с колонками C
и D
.Я не ожидал DataFrame
.
Я попытался отключить apply
с transform
и agg
, что дало:
ValueError: transform must return a scalar value for each group
и:
ValueError: cannot copy sequence with size 2 to array axis with dimension 5
соответственно.Существует ли относительно простое преобразование, которое может удалять строки по имени для каждого DataFrame
в pandas Group
и возвращать полученный Group
объект (или выполнять операцию на месте)?