Python:从excel中的数据创建字典

Python:从excel中的数据创建字典,python,pandas,dictionary,Python,Pandas,Dictionary,我有数据 sign number result Qjobstatus 1 Работаю полный рабочий день Qjobstatus 2 Работаю неполный рабочий день Qjobstatus 3 Не работаю Qcountry 1 Россия Qcountry 2 Украина Qcountry 3 Беларусь Qcountry 4 Азербайджан Q

我有数据

   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   Молдова
我需要创建字典,其中
符号==Qcountry
。 我想去

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

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

但它不起作用

IIUC然后您可以在np数组上调用
dict

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

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

IIUC然后您可以在np数组上调用
dict

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

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

有点迂回的方法,但请尝试:

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

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

有点迂回的方法,但请尝试:

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

transposed = df.T.to_dict()
result = {transposed[item]['number']: transposed[item]['result']
       for item in transposed}
解决方案包括:

解决方案包括:


你能告诉我,为什么它会打印我吗?{1L:u'\u0420\u043e\u0441\u0441\u0438\u044f',2L:u'\u0423\u043a\u0440\u0430\u0438\u043d\u0430',3L:u'\u0411\u0435\u043b\u0430\u0440\u0440\u0443\u0441\u044c',…}?你在运行python 2吗?我正在运行Python3,因此unicode被正确地处理。我认为您需要首先解码字符串,您是否能够使用Python3,因为这类东西可以轻松地工作?您可以说,为什么它打印我
{1L:u'\u0420\u043e\u0441\u0441\u0438\u044f',2L:u'\u0423\u043a\u0440\u0430\u0438\u043d\u0430',3L:u'\u0411\u0435\u043b\u0430\u0440\u0441\u044c',…}
?您正在运行python 2吗?我正在运行python 3,因此unicode的处理是正确的。我认为您需要首先解码字符串,您是否能够使用python 3,因为这类东西可以正常工作而不会带来任何麻烦