Я хочу видеть 2-верхние значения для каждого года.
df = pd.DataFrame({'year':[2018, 2018, 2018, 2017, 2017, 2006],'value':[1,2,3,4,5,6], 'title':['a', 'b', 'c', 'd','e','f'], 'smth1':[6,6,4,5,6,4],
'smth2':[9,8,7,6,5,2], 'smth3': [2,2,3,3,4,4]})
Здесь я использую идею, чтобы предотвратить потерю столбцов: pandas nlargest потерял один столбец ,
, так что это прекрасно работает для 1 или 2 столбцов, добавленных в set_index:
df_top = df.set_index('title').groupby('year')['value'].nlargest(2).reset_index()
Однако я хочу увидеть больше данных и попробовать:
df_top = df.set_index('title','smth1', 'smth2').groupby('year')['value'].nlargest(2).reset_index()
Таким образом, у меня столбец level_1 появляется сразу после столбца года вместо smth1.
В случае, если я напишу:
df_top = df.set_index('title','smth1', 'smth2', 'smth3').groupby('year')['value'].nlargest(2).reset_index()
Я получил " ValueError Для аргумента" inplace "ожидается тип bool, получен тип str."