【问题标题】:Applying multiple functions to a pivot table (grouped) dataframe将多个函数应用于数据透视表(分组)数据框
【发布时间】:2018-09-24 05:53:16
【问题描述】:

我目前有一个如下所示的数据框:

df:

 store  item  sales
0  1      1     10
1  1      2     20
2  2      1     10
3  3      2     20
4  4      3     10
5  3      4     15 
...

我想查看每家商店的每件商品的总销售额,所以我使用数据透视表来创建:

p_table = pd.pivot_table(df, index='store', values='sales', columns='item', aggfunc=np.sum)

这给出了类似的东西:

     sales
item   1  2  3  4
store  
 1     20 30 10 8
 2     10 14 12 13
 3     1  23 29 10
....

我现在要做的是应用一些函数,以便每个商品的总销售额代表特定商店总销售额的百分比。例如,store1 中项目 1 的值将变为:

1.    20/(20+30+10+8) * 100

我正在努力为堆叠的数据框执行此操作。任何建议将不胜感激。

谢谢

【问题讨论】:

    标签: pandas dataframe group-by pivot-table


    【解决方案1】:

    我认为需要除以divSeries 创建的sum

    print (p_table)
    item      1     2     3     4
    store                        
    1      10.0  20.0   NaN   NaN
    2      10.0   NaN   NaN   NaN
    3       NaN  20.0   NaN  15.0
    4       NaN   NaN  10.0   NaN
    
    print (p_table.sum(axis=1))
    store
    1    30.0
    2    10.0
    3    35.0
    4    10.0
    dtype: float64
    
    out = p_table.div(p_table.sum(axis=1), axis=0)
    print (out)
    item          1         2    3         4
    store                                   
    1      0.333333  0.666667  NaN       NaN
    2      1.000000       NaN  NaN       NaN
    3           NaN  0.571429  NaN  0.428571
    4           NaN       NaN  1.0       NaN
    

    【讨论】:

    • @NZ_DJ 谢谢,很高兴为您提供帮助。不要忘记接受答案,如果它适合你! :)
    猜你喜欢
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 2018-02-23
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 2021-09-10
    相关资源
    最近更新 更多