熊猫数据框的递归字典

时间:2019-12-05 09:09:02

标签: python pandas

我有一个这样的Pandas DataFrame:

index   0   1   2
    0   a   a   0.2
    1   a   a   0.4
    0   a   b   0.4
    1   a   b   0.7

我想要创建一个字典,以便通过列20轻松访问列1,如下所示:

{(a, a): pd.Series(data=[0.2, 0.4], index=[0, 1]),
 (a, b): pd.Series(data=[0.4, 0.7], index=[0, 1])}

您如何进行这种转换?

2 个答案:

答案 0 :(得分:1)

将groupby对象转换为系列字典的字典:

d = dict(tuple(df.groupby([0,1])[2]))

或使用字典理解:

d = {k: v[2] for k, v in df.groupby([0,1])}

print (d[('a','a')])
0    0.2
1    0.4
Name: 2, dtype: float64

答案 1 :(得分:0)

尝试:

df.groupby([0,1]).agg(list).to_dict('index')

{('a', 'a'): {'index': [0, 1], '2': [0.2, 0.4]},
 ('a', 'b'): {'index': [0, 1], '2': [0.4, 0.7]}}