如何将4维NumPy数组变量一对一映射到含值列的5列Pandas DataFrame
四维贸易土地足迹数组转DataFrame操作指南
现有记录贸易土地足迹的4维NumPy数组FP_fd_Merc,四个维度顺序为进口方、产品、需求部门、出口方,需要构建为Pandas DataFrame,前四列依次对应四个维度的实际名称,第五列为土地足迹数值,每行可承载完整的单条贸易土地足迹信息。
你提供的数组片段查询代码及返回结果如下:
In: FP_fd_Merc[0,:,:,CountryNo,:].shape Out: (28, 4, 200, 7)
实现步骤
- 提前准备四个维度的索引转实际名称的映射列表,列表长度和对应维度的尺寸完全匹配:
importer_labels:进口方维度映射列表product_labels:产品维度映射列表sector_labels:需求部门维度映射列表exporter_labels:出口方维度映射列表
- 生成四个维度的全组合索引并展平,同时将原数组数值展平,拼接为DataFrame:
import numpy as np import pandas as pd # 读取原数组各维度尺寸 n_imp, n_prod, n_sec, n_exp = FP_fd_Merc.shape # 生成和原数组维度顺序匹配的全索引网格 imp_idx, prod_idx, sec_idx, exp_idx = np.meshgrid( np.arange(n_imp), np.arange(n_prod), np.arange(n_sec), np.arange(n_exp), indexing='ij' ) # 拼接生成DataFrame land_footprint_df = pd.DataFrame({ '进口方': importer_labels[imp_idx.flatten()], '产品': product_labels[prod_idx.flatten()], '需求部门': sector_labels[sec_idx.flatten()], '出口方': exporter_labels[exp_idx.flatten()], '土地足迹数值': FP_fd_Merc.flatten() })
生成后的DataFrame可直接通过字段筛选查询任意组合的贸易土地足迹数据,比如要查「阿根廷出口的小麦被德国家庭消费产生的土地足迹」,只需对应筛选四个维度字段即可快速定位数值。
内容的提问来源于stack exchange,提问作者akif
相关产品推荐
相关产品推荐

