2016-12-16 7 views
1

Я следующий словарь питона:питона словарь для панд dataframe с несколькими столбцами

d= {'data'  : Counter({ 'important' : 2, 
         'very'  : 3}), 
    'analytics' : Counter({ 'boring' : 5, 
         'sleep'  : 3}) 
    } 

Я хочу, чтобы сохранить его как панда dataframe в следующем формате:

category | word  | count 
    data | important | 2 
    data | very  | 3 
analytics | boring | 5 
analytics | sleep  | 3 

Я попытался следующим , но ни один из них не работал

df = pd.DataFrame(d.items()) 

df = pd.DataFrame.from_dict(d, orient='index').reset_index() 

df = pd.DataFrame(data) 

ответ

4

Вы можете использовать stack:

df = pd.DataFrame(d).stack().reset_index() 
df.columns = ['word','category','count'] 
print(df) 
     word category count 
0  boring analytics 5.0 
1 important  data 2.0 
2  sleep analytics 3.0 
3  very  data 3.0 

df = pd.DataFrame.from_dict(d, orient='index').stack().reset_index() 
df.columns = ['category','word','count'] 
print(df) 

    category  word count 
0 analytics  boring 5.0 
1 analytics  sleep 3.0 
2  data important 2.0 
3  data  very 3.0 

Другое решение с вложенными список понимания:

df = pd.DataFrame([(key,key1,val1) for key,val in d.items() for key1,val1 in val.items()]) 
df.columns = ['category','word','count'] 
print(df) 
    category  word count 
0 analytics  boring  5 
1 analytics  sleep  3 
2  data important  2 
3  data  very  3 
+0

ИДЕАЛЬНОЕ !!!!!!!!!!!!!!!!!!!!!!! !!!!!!!! спасибо – jeangelj

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