2016-07-29 60 views
1

我有數據的Python:創建數據字典在Excel

sign number result 
Qjobstatus 1 Работаю полный рабочий день 
Qjobstatus 2 Работаю неполный рабочий день 
Qjobstatus 3 Не работаю 
Qcountry 1 Россия 
Qcountry 2 Украина 
Qcountry 3 Беларусь 
Qcountry 4 Азербайджан 
Qcountry 5 Армения 
Qcountry 6 Грузия 
Qcountry 7 Казахстан 
Qcountry 8 Кыргызстан 
Qcountry 9 Молдова 

我需要創建字典,其中sign == Qcountry。 我想

dict = {1: "Россия", 
     2: "Украина", 
     3: "Беларусь", ...} 

我試圖

if df.sign.contains('Qcountry'): 
    dict((ind, el) for (ind, el) in (df.number, df.result)) 

,但它不工作

回答

1

解決方案與to_dict

print (df[df['sign']=='Qcountry'].set_index('number')['result'].to_dict()) 
{1: 'Россия', 
2: 'Украина', 
3: 'Беларусь', 
4: 'Азербайджан', 
5: 'Армения', 
6: 'Грузия', 
7: 'Казахстан', 
8: 'Кыргызстан', 
9: 'Молдова'} 
2

IIUC那麼你可以撥打dict的NP陣列上:

In [284]: 
dict(df.loc[df['sign']=='Qcountry','number':].values) 

Out[284]: 
{1: 'Россия', 
2: 'Украина', 
3: 'Беларусь', 
4: 'Азербайджан', 
5: 'Армения', 
6: 'Грузия', 
7: 'Казахстан', 
8: 'Кыргызстан', 
9: 'Молдова'} 
+0

你能說,爲什麼它打印我'{1L:U '\ u0420 \ u043e \ u0441 \ u0441 \ u0438 \ u044f',2L:U'\ u0423 \ u0431a \ u0440 \ u0430 \ u0438 \ u043d \ u0430',3L:u'\ u0411 \ u0435 \ u043b \ u0430 \ u0440 \ u0443 \ u0441 \ u044c',...}'? – ldevyataykina

+0

你正在運行python 2嗎?我正在運行python 3所以unicode正在正確處理 – EdChum

+0

是的,我使用python 2 – ldevyataykina

1

有點迂迴的方法,但嘗試:

df = df[df['sign'] == 'Qcountry'] 

transposed = df.T.to_dict() 
result = {transposed[item]['number']: transposed[item]['result'] 
     for item in transposed}