У меня есть следующий фрейм данных s
:
arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
[1, 2, 1, 2, 1, 2, 3, 2,]]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
s = pd.Series(np.random.randn(8), index=index)
first second
bar 1 -0.493897
2 -0.274826
baz 1 -0.337298
2 -0.564097
foo 1 -1.545826
2 0.159494
qux 3 -0.876819
2 0.780388
dtype: float64
Я хотел бы преобразовать его в:
first second
bar 2 -0.274826
baz 2 -0.564097
foo 2 0.159494
qux 3 -0.876819
dtype: float64
Взяв max
second
каждого first
.
Я пытался сделать s.groupby(level=1).apply(max)
, но это возвращает:
second
1 -0.337298
2 0.780388
dtype: float64
Очевидно, что моя попытка возвращает максимум для каждой группы в second
вместо max
second
для каждого first
.
Есть идеи, как это сделать?