Написание Excel из словаря кортежей в python - PullRequest
0 голосов
/ 04 мая 2020

У меня есть список кортежей, как показано ниже

mylist = {'file1': {'N': '96', 'P': '70', 'E': '109', 'T': '10'}, 'file2': {'N': '6', 'P': '90', 'E': '1309', 'T': '100'}', 'file3': {'N': '966', 'P': '370', 'E': '1409', 'T': '50'}}

Если я извлекаю его как фрейм данных

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

, он работает нормально. но когда я пытаюсь записать этот файл в Excel

df_cpu.to_excel (writer, "MY", index=True)

Мой Excel не имеет столбца файла.

Ответы [ 2 ]

0 голосов
/ 04 мая 2020

Мое решение

Сначала установите openpyxl

1.open cmd.exe
2. запишите следующую команду:

cd C:\Users\username\AppData\Local\Programs\Python\Python37-32\Scripts
pip install openpyxl

Python код

mylist = {'file1': {'N': '96', 'P': '70', 'E': '109', 'T': '10'}, 'file2': {'N': '6', 'P': '90', 'E': '1309', 'T': '100'},'file3': {'N': '966', 'P': '370', 'E': '1409', 'T': '50'}}
df= pd.DataFrame.from_dict(mylist, orient='index')
df.to_excel(r"C:\Users\Any\Desktop\output.xlsx",sheet_name='Sheet_name')

выход

enter image description here

0 голосов
/ 04 мая 2020

Если у вас установлен openpyxl (может быть установлен с pip install openpyxl), должно работать следующее:

mylist = {
    "file1": {"N": "96", "P": "70", "E": "109", "T": "10"},
    "file2": {"N": "6", "P": "90", "E": "1309", "T": "100"},
    "file3": {"N": "966", "P": "370", "E": "1409", "T": "50"},
}

df = pd.DataFrame.from_dict(mylist, orient="index")
output = "OUTPUT.xlsx"
sheet_name = "MY"
df.to_excel(output, sheet_name, index=True)

Полученный файл Excel не имеет заголовка для столбца «file». Если вы хотите добавить один, вы можете вместо этого сделать

df.to_excel(output, sheet_name, index=True, index_label="file") # Replace "file" with whatever header you prefer)

В качестве альтернативы, поскольку результирующий файл довольно прост, вы можете просто использовать df.to_csv вместо

df.to_csv(output)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...