【发布时间】:2021-12-10 01:09:35
【问题描述】:
我正在尝试创建一个多索引数据框,其中包含所有可能的索引,即使是当前不包含值的索引。我希望将这些不存在的值设置为 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 | 0 | 0.00 | 0.00 |
|Retail| |____________|______________|_______________|_____________|_____________|
| | |Not Special | Brand | 756 | 15654.07 | 9498.23 |
| | | |______________|_______________|_____________|_____________|
| | | | Generic | 7896 | 98745.23 | 78953.56 |
| |____________|____________|______________|_______________|_____________|_____________|
| | Season | Special | Brand | 0 | 0.00 | 0.00 |
| | | |______________|_______________|_____________|_____________|
| | | | Generic | 0 | 0.00 | 0.00 |
| | |____________|______________|_______________|_____________|_____________|
| | |Not Special | Brand | 0 | 0.00 | 0.00 |
| | | |______________|_______________|_____________|_____________|
| | | | Generic | 0 | 0.00 | 0.00 |
|______|____________|____________|______________|_______________|_____________|_____________|
当至少一个索引级别包含一个值时,会产生此结果。但是,如果索引级别不包含任何值,则下面会产生以下结果。
___________________________________________________________________________________________
|Chan. | Duration | Designation| Manufact. |Total Purchases| Sales | Cost |
|______|____________|____________|______________|_______________|_____________|_____________|
| | Month | Not Special| Brand | 756 | 15654.07 | 9498.23 |
| | | |______________|_______________|_____________|_____________|
| | | | Generic | 7896 | 98745.23 | 78953.56 |
|Retail|____________|____________|______________|_______________|_____________|_____________|
| | Season |Not Special | Brand | 0 | 0.00 | 0.00 |
| | | |______________|_______________|_____________|_____________|
| | | | Generic | 0 | 0.00 | 0.00 |
|______|____________|____________|______________|_______________|_____________|_____________|
由于某种原因,这些值会继续被自动截断。如何修复索引,以便始终产生所需的结果,并且我始终可以可靠地使用这些索引进行计算,即使所述索引中没有值?
【问题讨论】:
-
我无法重现这个(熊猫 1.3.2)。你能用一个可运行的例子来编辑你的问题吗?
-
我已经编辑了示例以使其可重现。我相信现在您将能够验证我的示例@PeterLeimbigler
标签: python pandas multi-index