【发布时间】:2021-09-27 14:31:26
【问题描述】:
我有一个熊猫数据框df,如图所示。 (最后给出df.to_dict()):
model scenario module
AIM/CGE 2.0 ADVANCE_2020_1.5C-2100 wind_total_share high high
SSP1-19 wind_total_share high high
SSP2-19 wind_total_share high high
AIM/CGE 2.1 CD-LINKS_NPi2020_400 wind_total_share high high
TERL_15D_LowCarbonTransportPolicy wind_total_share medium medium
TERL_15D_NoTransportPolicy wind_total_share medium medium
GCAM 4.2 SSP1-19 wind_total_share medium medium
IMAGE 3.0.1 IMA15-AGInt wind_total_share low low
IMA15-Def wind_total_share low low
IMA15-Eff wind_total_share low low
model、scenario 和 module 是索引,而 Infrastructure 和 Investment 是数据框的两列。我想将这两列转换为矩阵格式,其中基础设施类似于 x 轴,投资类似于 Y 轴。此外,无论是在基础设施方面还是在投资方面,我都需要将它们分为低、中、高。
在单元格中,我想要模型名称和满足给定变量(投资基础设施)的给定类别(低/中/高)的场景,如下面的屏幕截图所示。在某些情况下,基础设施的情景较高,而投资的情景较低或中等,反之亦然。
我还想要另一个矩阵,它显示落入给定单元格的场景数量。第二个矩阵矩阵应该如下所示:
我不熟悉通过修改现有的 pandas 数据框来获得这种矩阵格式。是否有任何可用的功能或模块可用于此目的?如何使用 Python 将我的数据框转换为屏幕截图中所示的矩阵格式?
df.to_dict() 如下所示:
{'Infrastructure': {('AIM/CGE 2.0',
'ADVANCE_2020_1.5C-2100',
'wind_total_share'): 'high',
('AIM/CGE 2.0', 'SSP1-19', 'wind_total_share'): 'high',
('AIM/CGE 2.0', 'SSP2-19', 'wind_total_share'): 'high',
('AIM/CGE 2.1', 'CD-LINKS_NPi2020_400', 'wind_total_share'): 'high',
('AIM/CGE 2.1',
'TERL_15D_LowCarbonTransportPolicy',
'wind_total_share'): 'medium',
('AIM/CGE 2.1', 'TERL_15D_NoTransportPolicy', 'wind_total_share'): 'medium',
('GCAM 4.2', 'SSP1-19', 'wind_total_share'): 'medium',
('IMAGE 3.0.1', 'IMA15-AGInt', 'wind_total_share'): 'low',
('IMAGE 3.0.1', 'IMA15-Def', 'wind_total_share'): 'low',
('IMAGE 3.0.1', 'IMA15-Eff', 'wind_total_share'): 'low'},
'Investment': {('AIM/CGE 2.0',
'ADVANCE_2020_1.5C-2100',
'wind_total_share'): 'high',
('AIM/CGE 2.0', 'SSP1-19', 'wind_total_share'): 'high',
('AIM/CGE 2.0', 'SSP2-19', 'wind_total_share'): 'high',
('AIM/CGE 2.1', 'CD-LINKS_NPi2020_400', 'wind_total_share'): 'high',
('AIM/CGE 2.1',
'TERL_15D_LowCarbonTransportPolicy',
'wind_total_share'): 'medium',
('AIM/CGE 2.1', 'TERL_15D_NoTransportPolicy', 'wind_total_share'): 'medium',
('GCAM 4.2', 'SSP1-19', 'wind_total_share'): 'medium',
('IMAGE 3.0.1', 'IMA15-AGInt', 'wind_total_share'): 'low',
('IMAGE 3.0.1', 'IMA15-Def', 'wind_total_share'): 'low',
('IMAGE 3.0.1', 'IMA15-Eff', 'wind_total_share'): 'low'}}
【问题讨论】:
-
一个熊猫问题,包括可重复的输入数据...仅此一项就值得 +1 :-)
标签: python python-3.x pandas dataframe matrix