2016-06-10 1 views
0

У меня есть следующий dataframe непосредственно из SQL запроса:Как создать словарь словарей из в dataframe с помощью панд питона

Question   tagID Answer 
Primary purpose  62  Other 
Primary purpose  226  Learn how to use 
Primary purpose  227  Technical Support 
Primary purpose  292  Purchase 
Language   246  English 
Language   247  French 
Language   248  German 
Device    102  Desktop 
Device    103  Tablet 
Device    104  Mobile 

Мне нужно получить словарь, как:

{Primary purpose: {62: 'Other', 226:'Learn how to use',227:'Technical Support',292:'Purchase' }, Language:{246:'English', 247:'French',248:'German'}, Device: {102: 'Desktop', 103:'Mobile', 104:'Tablet'}} 

Я попробовал следующий код, но в нем перечислены все значения и метки:

SS_valueLabelsSQL = {} 
    for q in df['Question']: 
     SS_valueLabelsSQL[q] = {} 
     labels = df['Answer'].tolist() 
     values = df['tagID'].tolist() 
     SS_valueLabelsSQL[q] = dict(zip(values,labels)) 

Может кто-нибудь предложить лучшее решение нс?

ответ

3

Вы могли бы использовать:

df.set_index('Question').groupby(level='Question').apply(lambda x: x.set_index('tagID').squeeze().to_dict()).to_dict() 

получить:

{'Language': {248: 'German', 246: 'English', 247: 'French'}, 'Primary purpose': {226: 'Learn how to use', 227: 'Technical Support', 292: 'Purchase', 62: 'Other'}, 'Device': {104: 'Mobile', 102: 'Desktop', 103: 'Tablet'}} 
+0

Благодаря человеку. Действительно отличное решение! – ibarant

+0

Добро пожаловать! – Stefan

Смежные вопросы