如何从三元素元组列表高效创建指定结构的Pandas DataFrame
高性能实现方案
原方案性能差的核心原因是使用了Python层循环逐单元格赋值,完全避开了pandas的向量化运算优势,大数据量下耗时会随数据量线性上涨。
直接使用pandas内置的透视操作即可一步完成需求,性能可以提升数十至上百倍:
import pandas as pd # 从原始元组列表直接构建基础三列DataFrame raw_df = pd.DataFrame(data, columns=["name", "date", "score"]) # 透视得到目标结构,同时按日期排序列 target_df = raw_df.pivot(index="name", columns="date", values="score").sort_index(axis=1)
如果你的数据中存在同一个name+date组合对应多个score的情况,pivot方法会报重复索引错误,此时可以用pivot_table指定聚合规则处理重复值:
target_df = raw_df.pivot_table( index="name", columns="date", values="score", aggfunc="mean" # 可根据需求替换为sum、max、first等聚合函数 ).sort_index(axis=1)
内容的提问来源于stack exchange,提问作者nogader
相关产品推荐
相关产品推荐

