Некоторые упражнения просят «добавить вторичное имя» к столбцу df при применении функции агрегирования.
При заданном DF:
stype = ['s1','s1','s1','s1',
's2','s2','s2','s2']
dtype = ['d1','d1','d2','d2',
'd1','d1','d2','d2']
qty = [2, 1.4, 7, 3,
4, 1, 2.0, 3]
df = pd.DataFrame({'s_type':stype,
'd_type':dtype,
'qty':qty})
При группировании по первым 2 столбцами применяя функцию agg, как это
new_df=df.groupby(['s_type','d_type'],sort = False).agg({'qty':'median'})
И напечатать (new_df)
Я получаю этот вывод, обратите внимание, что qty
перемещается вверх на строку (я предполагаю, что это нормальное поведение) потому что это единственный столбец, в котором была применена функция agg
qty
s_type d_type
s1 d1 1.7
d2 5.0
s2 d1 2.5
d2 2.5
Вопрос (ы):
Можно ли установить имя дополнительного столбца в qty
label / name?,чтобы получить вывод, подобный этому:
qty
s_type d_type Median
s1 d1 1.7
d2 5.0
s2 d1 2.5
d2 2.5
Кроме того, почему qty
поднимается на 1 строку вверх?(Я использую Spyder, и я видел это также в консоли Anaconda / python, не уверен, что это как функция или нормальное поведение панд).
Одно Последнее обновление: в случае, если вам нужно использовать sort_values, вам придется использовать кортеж для столбца, в который вы добавляете вторичный индекс / имя, почти таким же образом при применении агрегатной функции ( см. ответ )
new_df=new_df.sort_values([('qty','MEDIAN')])
Таким образом, вы получаете DF, отсортированный по столбцу, к которому была применена функция agg, и к которому мы добавили индекс
qty
MEDIAN
s_type d_type
s1 d1 1.7
s2 d1 2.5
d2 2.5
s1 d2 5.0
python v3.6
панды v0.23
Спасибо.