pandas MultiIndex 是 SQL 复合索引的对应项吗?

问题描述 投票:0回答:1

我几天前在reddit上发布了此内容,但尚未收到任何回复。

我在网上读到的有关 pandas MultiIndex 的所有内容都使它看起来像是 SQL 复合索引的对应项。这是正确的理解吗?

此外,MultiIndex 通常被描述为分层的。这破坏了与综合指数的类比。对我来说,这意味着一个树结构,具有父键和子键,深度可能大于 2。复合索引不适合这张图。对于 MultiIndexes,父/子键是什么?

python pandas multi-index
1个回答
0
投票

我想你几乎回答了你的问题。 SQL 复合索引和 pandas 中的 MultiIndex 之间的主要区别在于层次结构,较低级别的索引具有更高的优先级。

考虑以下示例:

import pandas as pd
import numpy as np

multi_index = pd.MultiIndex.from_product([['East', 'West'], ['Retail', 'Corporate'], ['Shirts', 'Pants', 'Accessories']],
                                         names=['Region', 'Customer', 'Product'])

df = pd.DataFrame(np.random.randn(12, 2), index=multi_index, columns=['Revenue', 'Profit'])
print(df)

输出

                                Revenue     Profit
Region Customer Product                               
East   Retail   Shirts            0.469112 -0.282863
                Pants            -1.509059 -1.135632
                Accessories      -1.135632 -0.173215
      Corporate Shirts            0.119209 -1.044236
                Pants            -0.861849 -2.104569
                Accessories      -0.721189  0.265599
West  Retail    Shirts           -0.315196  0.854109
                Pants             0.572192 -0.273712
                Accessories       0.228440  0.574273
      Corporate Shirts           -0.284819 -0.671225
                Pants             0.146182  0.056439
                Accessories       0.423380  0.539674

在此示例中,我们的 MultiIndex 具有三个级别:

  1. 父级别是“地区”,键为“东”和“西”。
  2. 第二级是“客户”,键为“零售”和“企业”, 嵌套在每个“区域”下。
  3. 子级别是“产品”,键为“衬衫”, “裤子”和“配饰”,嵌套在每个组合下 “地区”和“客户”。
© www.soinside.com 2019 - 2024. All rights reserved.