Reputation: 11
dataframe is like below:
ENV INVOCATION SSM_ID ANA_ID VALUE
env1 invo1 A oas 1.6
env1 invo1 A default 2.0
env1 invo1 B oas 0.8
env1 invo2 C oas 0.4
env2 invo1 A oas 3.1
env2 invo2 B default 0.6
I want a dictionary like below
dic = {(env1,invo1,A,oas) : 1.6 , (env1,invo1,A,default) : 2.0 , (env1,invo1,B,oas) : 0.8 , (env1,invo2,C,oas) : 0.4 , (env2,invo1,A,oas) : 3.1 , (env2,invo2,B,default) : 0.6 }
Upvotes: 1
Views: 104
Reputation: 31011
Run:
dict = df.set_index(['ENV', 'INVOCATION', 'SSM_ID', 'ANA_ID']).VALUE.to_dict()
Upvotes: 2
Reputation: 22503
Just set_index
to all the columns except VALUE:
print (df.set_index(list(df.columns[:-1]))["VALUE"].to_dict())
{('env1', 'invo1', 'A', 'oas'): 1.6,
('env1', 'invo1', 'A', 'default'): 2.0,
('env1', 'invo1', 'B', 'oas'): 0.8,
('env1', 'invo2', 'C', 'oas'): 0.4,
('env2', 'invo1', 'A', 'oas'): 3.1,
('env2', 'invo2', 'B', 'default'): 0.6}
Upvotes: 2