我有一个这样的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
我想要创建一个字典,以便通过列2
和0
轻松访问列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])}
您如何进行这种转换?
答案 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]}}