Python Panda - переименование двухслойных имен обратно в одинарные после использования .AGG - PullRequest
0 голосов
/ 29 мая 2020

При создании вывода с использованием .agg и указании нескольких функций вы в конечном итоге создаете имя двойного слоя - например, ["Points", "std"], которое является стандартным отклонением переменной Точки.

Однако я хочу объединить эти данные обратно в набор основных данных, где все находится на одном уровне, как мне изменить это имя обратно на что-то совместимое, например «Points_STD». Логически я попытался использовать .rename для ссылки, как указано выше, но это просто не работает.

Заранее спасибо

Итак, этот бит работает:

df_K = df4.groupby(["Team"]).agg({
            'Shots' : ['mean', 'std']
        }).reset_index()

df_K["STD2"] = df_K["Shots", "std"] / df_K["Shots", "mean"]

Это не так:

df_K.rename(columns = {"Shots", "std":'Shots_Std' }, inplace = True)

ps Изображение как указано кому в комментариях

1 Ответ

0 голосов
/ 31 мая 2020

Если вы используете .agg для разделения каждого из них, он не будет мультииндексирован.

import pandas as pd
import numpy as np
import io

data = '''
Team Player Shots
A a 2
A b 3
A c 5
B e 1
B f 6
B g 7
'''

df = pd.read_csv(io.StringIO(data), sep='\s+')

df_K = df.groupby(["Team"])['Shots'].agg(Shots_mean='mean', Shots_std='std')
df_K["STD2"] = df_K["Shots_std"] / df_K["Shots_mean"]

df_K.reset_index(inplace=True)

    Team    Shots_mean  Shots_std   STD2
0   A   3.333333    1.527525    0.458258
1   B   4.666667    3.214550    0.688832
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...