我有一个如下所示的df:
+---------+---------------------------------------------------------+-------------+
| Product | Features | Profits USD |
+---------+---------------------------------------------------------+-------------+
| ABC | Feature A1|Feature B5|Feature D4 | 123,000 |
| DEF | Feature B8|Feature C3 | (23,000) |
| GHI | Feature B5|Feature B8|Feature D7|Feature F5|Feature T6 | 1,435,000 |
+---------+---------------------------------------------------------+-------------+
我想做的是:
我的方法(虽然不合逻辑)是为每行每个功能添加利润。因此,基本上,对于产品ABC:利润特征A1 = 123,000,利润特征B5 = 123,000,等等。
到目前为止,我有以下代码来计算将要素拆分成多列,然后按利润分组:
Features = (df.Features.str.split('|', expand=True)
.stack()
.to_frame(name='Feature')
)
Features.index = Features.index.droplevel(1)
Features_profits = (Features.join(df['Profits USD'])
.groupby('Feature')
.sum()
.sort_values('Profits USD', ascending = False))
但是然后我在绘制饼图时遇到了问题:
Features_profits.plot(kind='pie', autopct='%1.1f%%', label='Feature', figsize =(10,10))
Output > ValueError: pie requires either y column or 'subplots=True'
我也尝试过:
Features_profits
.stack().value_counts()
.plot(kind='pie', autopct='%1.1f%%', label='Feature', figsize =(10,10))
但是上述代码的结果饼图将Profits USD列作为标签/饼图。
我想一种方法是替换每个功能列中的Profits USD中的值,但是我认为必须有一种更优雅的方法。
我陷入困境,我们将不胜感激。