Я пытаюсь преобразовать такой df:
df = pd.DataFrame({'A': ['A1', 'A1', 'A1', 'A1', 'A1', 'A1', 'A2', 'A2', 'A2', 'A2', 'A2', 'A2', 'A2'],
'B': ['B1', 'B1', 'B2', 'B2', 'B3', 'B3', 'B4', 'B5', 'B6', 'B7', 'B7', 'B8', 'B8']})
, взяв n (здесь 2) самых больших индексов (по количеству B) до:
Мой способ сделать это:
df = df.groupby(['A', 'B'])['A'].count()
df = df.groupby(level=0).nlargest(2).reset_index(level=0, drop=True)
что дает мне (что близко к тому, что мне нужно):
Теперь единственные известные мне методы преобразования MultiIndex:
df.reset_index(level=1)
df.unstack()
Но они не даютмне то, что я ищу.Есть ли какой-либо метод dataframe, который сделает это для меня, или мне нужно сделать это с apply.Один из способов сделать это - перебрать каждую пару: df.index.get_level_values(level=1)
и поместить ее в новый df из 2 столбцов.Но это сломается. Если один index.level = 0, будет иметь только один index.level = 1
Кроме того: мне не важен порядок (самый большой), когда число одинаково.