У меня возникли проблемы с фильтрацией все, кроме последнего элемента 1 в каждой группе GroupBy объекта pandas.DataFrame:.Head() и .tail() с отрицательными индексами на панд GroupBy объект
x = pd.DataFrame([['a', 1], ['b', 1], ['a', 2], ['b', 2], ['a', 3], ['b', 3]],
columns=['A', 'B'])
g = x.groupby('A')
Как и следовало ожидать (согласно documentation) g.head(1)
возвращает
A B
0 a 1
1 b 1
, тогда как g.head(-1)
возвращает пустой DataFrame
от поведения x.head(-1)
я бы ожидать, что она вернется
A B
0 a 1
1 b 1
2 a 2
3 b 2
т.е. сбросив последний элемент каждой группы, а затем слияние его обратно в dataframe. Если это всего лишь ошибка в пандах, я был бы благодарен всем, кто предлагает альтернативный подход.
https://github.com/pydata/pandas/issues/9214 – TomAugspurger
спасибо, не удалось найти его. однако предлагаемый метод обхода (.apply) закручивает индекс в результате DF, можете ли вы указать мне, как вернуться к индексированию на основе целых чисел после .apply'ing? – whoever
g.apply (lambda x: x.head (-1)). Reset_index (drop = True), кажется, решает мою проблему – whoever