pandas groupby nlargest не позволяет увидеть все данные set_index проблема - PullRequest
0 голосов
/ 14 декабря 2018

Я хочу видеть 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."

1 Ответ

0 голосов
/ 14 декабря 2018

IIUC

df.sort_values('value').groupby('year').tail(2)
Out[148]: 
   year  value title  smth1  smth2  smth3
1  2018      2     b      6      8      2
2  2018      3     c      4      7      3
3  2017      4     d      5      6      3
4  2017      5     e      6      5      4
5  2006      6     f      4      2      4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...