【发布时间】:2021-12-09 05:19:00
【问题描述】:
我正在尝试创建一个多索引数据框,其中包含所有可能的索引,即使是当前不包含值的索引。我希望将这些不存在的值设置为 0。为此,我使用了以下内容:
index_levels = ['Channel', 'Duration', 'Designation', 'Manufacturing Class']
grouped_df = df.groupby(by = index_levels)[['Total Purchases', 'Sales', 'Cost']].agg('sum')
grouped_df = grouped_df.reindex(pd.MultiIndex.from_product(grouped_df.index.levels), fill_value = 0)
预期结果:
___________________________________________________________________________________________
|Chan. | Duration | Designation| Manufact. |Total Purchases| Sales | Cost |
|______|____________|____________|______________|_______________|_____________|_____________|
| | Month | Special | Brand | 0 | 0.00 | 0.00 |
| | | |______________|_______________|_____________|_____________|
| | | | Generic | 1567 | 16546.07 | 16000.00 |
|Retail|____________|____________|______________|_______________|_____________|_____________|
| | Season |Not Special | Brand | 351 | 13246.00 | 15086.26 |
| | | |______________|_______________|_____________|_____________|
| | | | Generic | 0 | 0.00 | 0.00 |
|______|____________|____________|______________|_______________|_____________|_____________|
当至少一个索引级别包含一个值时,会产生此结果。但是,如果索引级别不包含任何值,则下面会产生以下结果。
___________________________________________________________________________________________
|Chan. | Duration | Designation| Manufact. |Total Purchases| Sales | Cost |
|______|____________|____________|______________|_______________|_____________|_____________|
| | Monthly | Special | Generic | 1567 | 16546.07 | 16000.00 |
|Retail|____________|____________|______________|_______________|_____________|_____________|
| | Season |Not Special | Brand | 351 | 13246.00 | 15086.26 |
|______|____________|____________|______________|_______________|_____________|_____________|
由于某种原因,这些值会继续被自动截断。如何修复索引,以便始终产生所需的结果,并且我始终可以可靠地使用这些索引进行计算,即使所述索引中没有值?
【问题讨论】:
标签: python pandas multi-index