簡體   English   中英

熊貓:創建一個以元組為鍵的字典

[英]Pandas: create a dictionary with a tuple as key

鑒於此DataFrame

import pandas as pd
first=[0,1,2,3,4]
second=[10.2,5.7,7.4,17.1,86.11]
third=['a','b','c','d','e']
fourth=['z','zz','zzz','zzzz','zzzzz']
df=pd.DataFrame({'first':first,'second':second,'third':third,'fourth':fourth})
df=df[['first','second','third','fourth']]

   first  second third fourth
0      0   10.20     a      z
1      1    5.70     b     zz
2      2    7.40     c    zzz
3      3   17.10     d   zzzz
4      4   86.11     e  zzzzz

我可以創建一個包含列列表的字典作為值,如下所示:

d = {df.loc[idx, 'first']: [df.loc[idx, 'second'], df.loc[idx, 'third']] for idx in range(df.shape[0])}

但是,如何創建一個字典,例如,包含firstsecond作為鍵的元組?

結果將是:

In[1]:d
Out[1]: 
{(0,10.199999999999999): 'a',
 (1,5.7000000000000002): 'b',
 (2,7.4000000000000004): 'c',
 (3,17.100000000000001): 'd',
 (4,86.109999999999999): 'e'}

PS:我怎么能確保pandas不會搞砸價值? 10.20現已成為10.1999999999 ......

您需要通過set_index創建MultiIndex ,然后調用Series.to_dict

a = df.set_index(['first','second']).third.to_dict()
print (a)
{(2, 7.4): 'c', (1, 5.7): 'b', (3, 17.1): 'd', (0, 10.2): 'a', (4, 86.11): 'e'}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM