Pandas如何将多个二维DataFrame合并为带层级列的三维DataFrame
Pandas 分层列合并实现方案
你需要的分层列效果本质是pandas的MultiIndex多级列结构,不需要构造特殊三维对象,直接用横向拼接+指定一级列键值即可实现,代码如下:
import pandas as pd # 横向拼接两个目标DataFrame,keys参数对应一级分类列名 merged_df = pd.concat( [dfB, dfC], axis=1, keys=["Gaming", "Casual"] )
执行后输出的merged_df结构完全匹配预期:
Gaming Casual brand price brand price cheap ASUS 200 HP 500
补充使用说明
- 该方法会自动按行索引对齐数据,你当前两个DataFrame的行索引都是
cheap,因此不会产生空值;如果后续合并的DataFrame行索引不完全一致,pandas会自动按索引匹配,缺失位置填充NaN。 - 分层列的取值方式和普通列略有区别:
- 取整个Gaming分类下的所有列:
merged_df["Gaming"] - 取Gaming分类下的brand列:
merged_df[("Gaming", "brand")]
- 取整个Gaming分类下的所有列:
- 如果需要调整两个一级分类的展示顺序,直接修改
keys参数里的字符串顺序即可。
内容的提问来源于stack exchange,提问作者mohamad jumaa
相关产品推荐
相关产品推荐

