अगर मेरे पास डेटाफ्रेम में 100 कॉलम हैं और मैं कॉलम की जोड़ी के शब्दकोश बनाना चाहता हूं, तो कुंजी हमेशा एक निश्चित कॉलम होगी। यह कैसे किया जा सकता है?

मान लें कि हमारे पास इस तरह एक डेटाफ्रेम है:

k    v1    v2    ...    v99
============================
i    1     2     ...    9
ii   11    22    ...    99
iii  111   222   ...    999
...

मुझे शब्दकोश चाहिए dict_v1, dict_v2 ... dict_v99। उदाहरण के लिए dict_v2 होगा:

{'i': 2, 'ii': 22, 'iii': 222, ...}
3
robinhoodjr 1 अप्रैल 2020, 08:23

1 उत्तर

सबसे बढ़िया उत्तर

मेरा सुझाव है कि जैसे शब्दकोशों का शब्दकोश बनाएं:

d = df.set_index('k').to_dict()
print (d)
{'v1': {'i': 1, 'ii': 11, 'iii': 111}, 
 'v2': {'i': 2, 'ii': 22, 'iii': 222}, 
 'v99': {'i': 9, 'ii': 99, 'iii': 999}}

फिर प्रत्येक तानाशाही कुंजी द्वारा चयन संभव है:

print (d['v2'])
{'i': 2, 'ii': 22, 'iii': 222}

एक और विचार होना चाहिए:

df1 = df.set_index('k')
print (df1)
      v1   v2  v99
k                 
i      1    2    9
ii    11   22   99
iii  111  222  999

print (df1['v2'].to_dict())
{'i': 2, 'ii': 22, 'iii': 222}

आपको जो चाहिए वह संभव है, लेकिन पायथन नेमस्पेस में गतिशील रूप से नाम जोड़ने का बुरा विचार है।:

for k, v in df.set_index('k').to_dict().items():
    globals()[f'dict_{k}'] =  v

print (dict_v2)
{'i': 2, 'ii': 22, 'iii': 222}
2
jezrael 1 अप्रैल 2020, 05:32