将带有multiindex的pandas pivot表转换为嵌套字典

时间:2018-02-27 23:40:54

标签: python pandas

我查看了类似于我的问题的各种答案,但找不到针对我的具体案例的解决方案。

我正在创建一个带有多索引的pandas数据透视表:

df = pd.pivot_table(df, index  = ['clusterKey',
                                 'campaignTitle',
                                 'couponName'],
                        values = ['salesValue','budgetSpent'])

我想创建一个数据结构,其中索引转换为嵌套字典,因此可以像这样访问数据结构:

val = dict['clusterKeyA']['campaignTitleB']['couponNameC']['salesValue']

1 个答案:

答案 0 :(得分:0)

不确定您是否对此格式感到满意,但您可以直接使用pd.DataFrame.to_dict(),这非常简单。然后,您可以使用双嵌套字典访问值,其中第一级是三个索引的元组。

d = pt.to_dict("index")
d
{('A', 'a', 'd'): {'val1': 1.5, 'val2': 1.0},
 ('A', 'b', 'a'): {'val1': 3.0, 'val2': 4.0},
 ('B', 'a', 'a'): {'val1': 4.0, 'val2': 4.0},
 ('B', 'b', 'c'): {'val1': 5.0, 'val2': 1.0},
 ('B', 'c', 'c'): {'val1': 6.0, 'val2': 1.0},
 ('C', 'b', 'a'): {'val1': 7.0, 'val2': 3.0},
 ('C', 'b', 'b'): {'val1': 8.0, 'val2': 3.0},
 ('C', 'c', 'c'): {'val1': 9.0, 'val2': 1.0},
 ('C', 'c', 'd'): {'val1': 1.0, 'val2': 1.0}}

d[("A","a","d")]["val1"]
1.5