Как мне избавиться от кортежа в подгруппе данных? - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь перемасштабировать значения сгруппированных строк в проценты от их общего количества через серию из двух групповых операторов, как показано ниже:

import pandas as pd

data = [{'name': 'A', 'x':1, 'y':1},{'name': 'B', 'x':2, 'y':4},{'name': 'A', 'x':3, 'y':2}]

df = pd.DataFrame(data)
df.groupby(['name','y']).size().groupby(level=0).apply(
    lambda x: 100 * x / x.sum()
).to_frame().unstack()

Я получаю следующий вывод:

    0
y   1       2       4
name            
A   50.0    50.0    NaN
B   NaN     NaN     100.0

Это вывод, который я ищу, но ... с этим дополнительным измерением 0, добавленным к заголовкам столбцов ... что вызывает это и как от него избавиться?

1 Ответ

0 голосов
/ 25 октября 2019

Я считаю, что часть groupby(level=0) является причиной нового уровня 0 в вашем выводе. Это похоже на то же самое, без уровня 0 и без лямбды. Я полагаю, что я уловил ваше общее намерение.

df.groupby(['name','y']).size().div(df.groupby('name')['y'].count()).unstack(level=-1) * 100

Результат:

y        1     2      4
name                   
A     50.0  50.0    NaN
B      NaN   NaN  100.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...