无循环构建Pandas纵向数据整合脚手架DataFrame方法问询
高效构建纵向数据脚手架DataFrame的方法
要生成包含N个个体、每个个体对应Y个周期的脚手架DataFrame,完全可以不用循环,利用pandas的笛卡尔积特性一步搞定,比手动复制拼接高效得多。
核心实现代码
假设N=5(个体数量),Y=10(每个个体的周期数),DATE序列为0到9:
import pandas as pd # 生成个体ID和日期的笛卡尔积 scaffold = pd.MultiIndex.from_product( [[1,2,3,4,5], range(10)], # 第一个列表是所有个体ID,第二个是日期范围 names=['ID', 'DATE'] ).to_frame(index=False) print(scaffold)
如果个体ID是从1到N的连续整数,还可以进一步简化:
N = 5 Y = 10 scaffold = pd.MultiIndex.from_product( [range(1, N+1), range(Y)], names=['ID', 'DATE'] ).to_frame(index=False)
方法说明
pd.MultiIndex.from_product会直接生成个体ID和日期的所有组合,也就是每个ID对应完整的Y个日期,完美符合纵向数据的脚手架需求。- 最后用
to_frame(index=False)把MultiIndex转换成普通的DataFrame,自动保留ID和DATE列名,无需额外处理。
这种方法不管N是多少,都能一行核心代码完成,完全避免了循环或手动复制拼接的繁琐操作。
内容的提问来源于stack exchange,提问作者JPErwin
相关产品推荐
相关产品推荐

