熊猫MultiIndex中的地图标签如何?

时间:2018-08-28 18:51:04

标签: python pandas pandas-groupby

我有这个数据集,

new_df = pd.DataFrame( { 
    "Country" : ["C1", "C2", "C1", "C3", "C1", "C3", "C1"],
    "City" : ["ISB", "KHR", "LAH", "DUB", "RWP", "RWP", "RWP"],
    "Sales" : [10, 25, 40, 20, 45 , 43,10]  } )

我是在哪做的

grouped_new_df = new_df.groupby(['Country', 'City'])
new_new_df = grouped_new_df.agg({'Sales': {'Mean': np.mean, 'Sum':np.sum}})

enter image description here

new_new_df.index
MultiIndex(levels=[['C1', 'C2', 'C3'], ['DUB', 'ISB', 'KHR', 'LAH', 'RWP']],
           labels=[[0, 0, 0, 1, 2, 2], [1, 3, 4, 2, 0, 4]],
           names=['Country', 'City'])

我不明白这些标签labels=[[0, 0, 0, 1, 2, 2], [1, 3, 4, 2, 0, 4]],是如何映射的?

2 个答案:

答案 0 :(得分:4)

labelslevels的相应索引。例如,Country中多索引的第一级。如果您查看levels,那是 该列表包含C1C2C3。因此您的数据是C1,C1,C1,C2,C3,C3,即列表[0,0,0,1,2,2]的索引[C1,C2,C3]

相同的逻辑适用于City级别

答案 1 :(得分:1)

在您的示例中,如果您想要index level=1的值,则可以。

new_new_df.index.levels[1][new_new_df.index.labels[1]]
Out[230]: Index(['ISB', 'LAH', 'RWP', 'KHR', 'DUB', 'RWP'], dtype='object', name='City')