2015-12-09 2 views
1

У меня есть следующий словарь в python, который представляет матрицу From-To Distance.Как написать словарь в Excel в Python

graph = {'A':{'A':0,'B':6,'C':INF,'D':6,'E':7}, 

     'B':{'A':INF,'B':0,'C':5,'D':INF,'E':INF}, 

     'C':{'A':INF,'B':INF,'C':0,'D':9,'E':3}, 

     'D':{'A':INF,'B':INF,'C':9,'D':0,'E':7}, 

     'E':{'A':INF,'B':4,'C':INF,'D':INF,'E':0} 

     } 

Можно ли выводить эту матрицу в excel или в файл csv, чтобы он имел следующий формат? Я изучил использование csv.writer и csv.DictWriter, но не смог создать желаемый результат.

enter image description here

ответ

1

Вы можете создать панда dataframe из этого Словаря, а затем сохранить в CSV или Excel:

import pandas as pd 
df = pd.DataFrame(graph).T # transpose to look just like the sheet above 
df.to_csv('file.csv') 
df.to_excel('file.xls') 
+0

Отлично работает Спасибо! Позвольте мне сделать еще один шаг. Можно ли, учитывая набор пар данных данных, суммировать их соответствующие значения из кадра данных? Например, если бы у меня были пары (A, E), (A, F) и (B, D), я хотел бы вернуть сумму своих значений (6 + 7 + 5) = 18 – Jeremy

+0

Конечно, с ('A ',' F '), (' B ',' D ')]' вы можете сделать 'sum (df. ix [пара] для пары попарно). – fernandezcuesta

1

Возможно не самый минимальный результат, но панда бы решить эту проблему на удивлении (и если вы «Производя анализ данных любого рода, я могу очень порекомендовать панды!».

Ваши данные уже в perfectformat для приведения в Dataframe

INF = 'INF' 
graph = {'A':{'A':0,'B':6,'C':INF,'D':6,'E':7}, 

     'B':{'A':INF,'B':0,'C':5,'D':INF,'E':INF}, 

     'C':{'A':INF,'B':INF,'C':0,'D':9,'E':3}, 

     'D':{'A':INF,'B':INF,'C':9,'D':0,'E':7}, 

     'E':{'A':INF,'B':4,'C':INF,'D':INF,'E':0} 
     } 
import pandas as pd 
pd.DataFrame(graph).to_csv('OUTPUT.csv') 

Contents of OUTPUT.csv но выход вы хотите в этом транспонированной, так:

pd.DataFrame(graph).T.to_csv('OUTPUT.csv') 

где T возвращает транспонирование Dataframe.

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