![Pandas数据分析快速上手500招(微课视频版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/35/47216035/b_47216035.jpg)
上QQ阅读APP看书,第一时间看更新
023 根据DataFrame创建笛卡儿积多层索引
此案例主要演示了使用MultiIndex.from_product()函数根据DataFrame的多列数据创建笛卡儿积风格的多层索引的DataFrame。笛卡儿积简述如下:两个集合A与B的笛卡儿积就是A的所有元素乘以B的所有元素的集合。当在Jupyter Notebook中运行此案例代码之后,根据如图023-1所示的DataFrame创建的笛卡儿积风格的多层索引的DataFrame的效果如图023-2所示。
![](https://epubservercos.yuewen.com/DC5573/26580753209033106/epubprivate/OEBPS/Images/Figure-P40_2741.jpg?sign=1738984850-IOvS0Fsu0vDpYHsX9zfDU0MABDR1cTLH-0-b4873b196a8193b345e1d0bb74525e85)
图023-1
![](https://epubservercos.yuewen.com/DC5573/26580753209033106/epubprivate/OEBPS/Images/Figure-P40_2742.jpg?sign=1738984850-ALA1EB0C8hFOxhWT7Qq5pleCE7r5ZXg1-0-5e6c65ab8df14229fc9e3c05673316c8)
图023-2
主要代码如下。
![](https://epubservercos.yuewen.com/DC5573/26580753209033106/epubprivate/OEBPS/Images/Figure-P40_2743.jpg?sign=1738984850-dt0BmZgLQxvjDTsEvFmayz4XKl4RsYpQ-0-6b6ad3aa410ce3dbe698a630730572cd)
在上面这段代码中,pd.MultiIndex.from_product([df.机构名称, df.行业, df.操作策略], names=df.columns).to_frame().loc[lambda x:x.apply(lambda s: s.notna().all(),axis=1)].astype(str).agg(sum,axis=1).to_frame('详细名单')表示根据df的3列数据创建笛卡儿积样式的多层索引的DataFrame。
此案例的主要源文件是MyCode\H541\H541.ipynb。