计算组的百分比并仍显示其他列-Python

时间:2020-10-16 17:16:59

标签: python pandas dataframe aggregate

我正在尝试获取每个国家/地区产品出现率的百分比

我分别通过对Volume和ExpectedProfit列进行汇总:

批量代码:

df = (data1.groupby(['Country','Sector','Product'])['Volume']
      .sum()
      .reset_index(name='Volume'))

ExpectedProfit汇总代码:

grouper = data1.groupby(['Country','Sector','Product'])

df1 = grouper.RealizedPL.sum() + grouper.NetUnrealized.sum()
df1 = df1.reset_index(name="ExpectedProfit")
df1

然后我合并 df和df1,代码:

market = pd.merge(df1, df3, left_on=('Country','Sector','Product'), right_on=('Country','Sector','Product'), how='outer')

现在我要计算每个产品在每个国家/地区出现的频率。

我对频率使用了以下代码:

df2 = (data1.groupby(['Country','Sector'])['Product']
     .value_counts(normalize=True)
     .reset_index(name='Products%'))  

但是问题是聚合的Volume和ExpectedProfit消失了。

我真的需要帮助,将不胜感激!

您可以使用以下示例数据框从头开始解决问题:

   Country       Sector       Product            Volume    Profit   UnrealizedProfit      
0  Country_1     Sector1      Product_1          50         5            4
1  Country_1     Sector2      Product_2          100        6            3
2  Country_2     Sector1      Product_1          150        3            -1
3  Country_2     Sector2      Product_2          200        -1           5
4  Country_1     Sector1      Product_2          100        7            10
5  Country_2     Sector2      Product_2          200        -3           -1
6  Country_2     Sector1      Product_1          150        2            -1
7  Country_1     Sector2      Product_1          50         5            -3

所需的输出:

   Country       Sector       Product            Product%   Volume    ExpectedProfit        
0  Country_1     Sector1      Product_1          0.138             100        11
1  Country_1     Sector2      Product_2          0.861             200        26
2  Country_2     Sector1      Product_1          0.667             300        3
3  Country_2     Sector2      Product_2          0.333             400        0

注意::每个代码都可以单独正常运行,但是如果我合并了将“产品%”投放到市场数据框的代码,则该%不会给我带来很好的结果。

总结:我希望将国家/地区,部门,产品以及汇总的数量,每个国家/地区的预期利润和产品百分比都显示在一个最终数据框中。

非常感谢您

0 个答案:

没有答案