我几天前在reddit上发布了此内容,但尚未收到任何回复。
我在网上读到的有关 pandas MultiIndex 的所有内容都使它看起来像是 SQL 复合索引的对应项。这是正确的理解吗?
此外,MultiIndex 通常被描述为分层的。这破坏了与综合指数的类比。对我来说,这意味着一个树结构,具有父键和子键,深度可能大于 2。复合索引不适合这张图。对于 MultiIndexes,父/子键是什么?
我想你几乎回答了你的问题。 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 具有三个级别: