我正在尝试获取每个国家/地区产品出现率的百分比
我分别通过对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
注意::每个代码都可以单独正常运行,但是如果我合并了将“产品%”投放到市场数据框的代码,则该%不会给我带来很好的结果。
总结:我希望将国家/地区,部门,产品以及汇总的数量,每个国家/地区的预期利润和产品百分比都显示在一个最终数据框中。
非常感谢您