如何摆脱数据框子组中的元组?

时间:2019-10-25 17:53:56

标签: python pandas dataframe pandas-groupby

我正尝试通过一系列两个group语句将分组行的值重新缩放为占总数的百分比,如下所示:

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 :(得分:0)

我相信groupby(level=0)部分是您的输出中新0电平的原因。没有0级且没有lambda,这似乎可以达到相同的效果。我相信我掌握了您的总体意图。

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