如何转置对象数组数据,以年份为维度聚合收入值?
数据转置实现方案
嘿,我来帮你搞定这个数据转置的需求!咱们可以用两种常见的方式来实现——纯Python字典处理,或者用pandas生成表格形式的转置结果,看你更需要哪种。
方式一:纯Python字典分组(生成键值对结构)
这种方式会把数据转置成年份为顶级键,月份为子键,收入为对应值的结构,非常方便后续的键值查找。
步骤与代码示例
# 先把你的原始数据补全(假设2016年的后续数据是类似结构) raw_data = [ {"year": 2017, "month": "Jan", "revenue": 2000}, {"year": 2017, "month": "Feb", "revenue": 3000}, {"year": 2017, "month": "Mar", "revenue": 1000}, {"year": 2016, "month": "Jan", "revenue": 5000}, {"year": 2016, "month": "Feb", "revenue": 4500}, {"year": 2016, "month": "Mar", "revenue": 3200} ] # 初始化空字典存储转置结果 transposed_data = {} # 遍历原始数据完成分组转置 for item in raw_data: year = item["year"] month = item["month"] revenue = item["revenue"] # 如果当前年份还没在结果字典里,先创建一个空的子字典 if year not in transposed_data: transposed_data[year] = {} # 将月份和收入对应存入子字典 transposed_data[year][month] = revenue # 打印转置后的结果 print(transposed_data)
运行结果
执行后会得到这样的结构:
{ 2017: {'Jan': 2000, 'Feb': 3000, 'Mar': 1000}, 2016: {'Jan': 5000, 'Feb': 4500, 'Mar': 3200} }
方式二:用Pandas生成表格格式(适合数据分析场景)
如果你需要更直观的表格形式(月份为行,年份为列,收入为单元格值),用pandas库会更高效。
步骤与代码示例
import pandas as pd # 同样用补全后的原始数据 raw_data = [ {"year": 2017, "month": "Jan", "revenue": 2000}, {"year": 2017, "month": "Feb", "revenue": 3000}, {"year": 2017, "month": "Mar", "revenue": 1000}, {"year": 2016, "month": "Jan", "revenue": 5000}, {"year": 2016, "month": "Feb", "revenue": 4500}, {"year": 2016, "month": "Mar", "revenue": 3200} ] # 把原始数据转换成DataFrame df = pd.DataFrame(raw_data) # 使用pivot方法完成转置:行是月份,列是年份,值为收入 transposed_df = df.pivot(index='month', columns='year', values='revenue') # 打印转置后的表格 print(transposed_df)
运行结果
输出的表格形式如下:
year 2016 2017 month Feb 4500 3000 Jan 5000 2000 Mar 3200 1000
内容的提问来源于stack exchange,提问作者Hannan
相关产品推荐
相关产品推荐

