Je souhaite exporter un dictionnaire au format suivant:
{'66': 74, '62': 32, '69': 18, '72': 14, '64': 37, '192': 60, '51': 70, '46': 42, '129': 7, '85': 24, '83': 73, '65': 14, '87': 28, '185': 233, '171': 7, '176': 127, '89': 42, '80': 32, '5': 54, '93': 56, '104': 53, '138': 7, '162': 28, '204': 28, '79': 46, '178': 60, '144': 21, '90': 136, '193': 42, '88': 52, '212': 22, '199': 35, '198': 21, '149': 22, '84': 82, '213': 49, '47': 189, '195': 46, '31': 152, '71': 21, '70': 4, '207': 7, '158': 14, '109': 7, '163': 46, '142': 14, '94': 14, '173': 11, '78': 7, '134': 7, '96': 7, '128': 7, '54': 14, '63': 4, '120': 28, '121': 7, '37': 22, '13': 7, '45': 14, '23': 10, '180': 7, '50': 14, '188': 35, '24': 7, '139': 18, '148': 12, '151': 4, '2': 18, '34': 4, '77': 32, '81': 44, '82': 11, '92': 19, '95': 29, '98': 7, '217': 21, '172': 14, '35': 148, '146': 7, '91': 21, '103': 21, '184': 28, '165': 7, '108': 7, '112': 7, '118': 7, '159': 7, '183': 7, '186': 7, '205': 7, '60': 7, '67': 7, '76': 7, '86': 7, '209': 7, '174': 7, '194': 1}
vers les colonnes comme indiqué ici:
J'ai essayé d'utiliser pandas et xlsxwriter mais je n'ai pas réussi à le faire fonctionner
5 Réponses :
Si vous utilisez Python3.6 + , les dictionnaires sont classés. Vous pouvez en savoir plus sur les spécificités à Les dictionnaires sont-ils classés en Python3. 6+ .
Si vous répondez à ces versions, vous pouvez utiliser xlsxwriter
comme ceci:
import xlsxwriter d = [('66', 74), ('62', 32), ('69', 18)] # Create an new Excel file and add a worksheet. with xlsxwriter.Workbook('demo.xlsx') as workbook: # Add worksheet worksheet = workbook.add_worksheet() # Write headers worksheet.write(0, 0, 'Start') worksheet.write(0, 1, 'Quanitity') # Write list data for i, (k, v) in enumerate(d, start=1): worksheet.write(i, 0, k) worksheet.write(i, 1, v)
Sinon, stockez vos données dans une séquence ordonnée, comme une liste de tuples, et faites la même chose:
XXX
Cette approche est plus sûre si vous voulez que votre code fonctionne pour toutes les versions de python.
demo.xlsx:
Que diriez-vous de cela?
df.to_excel("fname.xlsx")
Créez un bloc de données dans les pandas, puis convertissez-le en 'csv':
df = pd.DataFrame({"Start": keys, "Quantity": values}) df.to_csv("fname.csv")
Ou, si préféré, directement comme 'xlsx':
import pandas as pd keys = my_dict.keys() values = my_dict.values()
le titre demande xlsx
pas csv
Oui, une grande différence.
Je ne pouvais pas reproduire cela parce que j'avais plus de 2 colonnes, comme start2, quantity2 avec un nombre d'entrées différent, mon problème de ne pas vous le faire savoir.
Vous pouvez le faire parfaitement en utilisant des pandas, il vous suffit de changer le chemin vers l'endroit où vous souhaitez enregistrer votre feuille Excel. Cependant, l'ordre des paires clé: valeur n'est pas conservé lors de l'analyse des dictionnaires, ce qui peut être un problème pour vous.
import pandas as pd mydict= {'66': 74, '62': 32, '69': 18, '72': 14, '64': 37, '192': 60, '51': 70, '46': 42, '129': 7, '85': 24, '83': 73, '65': 14, '87': 28, '185': 233, '171': 7, '176': 127, '89': 42, '80': 32, '5': 54, '93': 56, '104': 53, '138': 7, '162': 28, '204': 28, '79': 46, '178': 60, '144': 21, '90': 136, '193': 42, '88': 52, '212': 22, '199': 35, '198': 21, '149': 22, '84': 82, '213': 49, '47': 189, '195': 46, '31': 152, '71': 21, '70': 4, '207': 7, '158': 14, '109': 7, '163': 46, '142': 14, '94': 14, '173': 11, '78': 7, '134': 7, '96': 7, '128': 7, '54': 14, '63': 4, '120': 28, '121': 7, '37': 22, '13': 7, '45': 14, '23': 10, '180': 7, '50': 14, '188': 35, '24': 7, '139': 18, '148': 12, '151': 4, '2': 18, '34': 4, '77': 32, '81': 44, '82': 11, '92': 19, '95': 29, '98': 7, '217': 21, '172': 14, '35': 148, '146': 7, '91': 21, '103': 21, '184': 28, '165': 7, '108': 7, '112': 7, '118': 7, '159': 7, '183': 7, '186': 7, '205': 7, '60': 7, '67': 7, '76': 7, '86': 7, '209': 7, '174': 7, '194': 1} df = pd.DataFrame() df['Start'] = mydict.keys() df['Quantity'] = mydict.values() df.to_excel("C:\Users\David\Desktop\dict_test.xlsx")
Voici comment je le ferais
D'abord, vous avez besoin de pandas
et openpyxl
alors faites-les d'abord
df = pd.DataFrame.from_records(list(data.items()), columns=['Start', 'Quantity']) writer = pd.ExcelWriter('out.xlsx') df.to_excel(writer, 'Sheet1', index=False) writer.save()
où data
est votre dictionnaire
Avez-vous besoin d'openpyxl lorsque to_excel de pandas écrira votre dataframe dans un fichier Excel?
il est dans la documentation officielle, pandas.pydata.org/ pandas-docs / stable / generated /… tout en bas Je ne suis en aucun cas un expert des pandas
J'espère que cela vous aidera, vous devez d'abord réorganiser les informations contenues dans le dictionnaire et les enregistrer avec pandas Excel Writer
import pandas as pd dic = {'66': 74, '62': 32, '69': 18, '72': 14, '64': 37, '192': 60, '51': 70, '46': 42, '129': 7, '85': 24, '83': 73, '65': 14, '87': 28, '185': 233, '171': 7, '176': 127, '89': 42, '80': 32, '5': 54, '93': 56, '104': 53, '138': 7, '162': 28, '204': 28, '79': 46, '178': 60, '144': 21, '90': 136, '193': 42, '88': 52, '212': 22, '199': 35, '198': 21, '149': 22, '84': 82, '213': 49, '47': 189, '195': 46, '31': 152, '71': 21, '70': 4, '207': 7, '158': 14, '109': 7, '163': 46, '142': 14, '94': 14, '173': 11, '78': 7, '134': 7, '96': 7, '128': 7, '54': 14, '63': 4, '120': 28, '121': 7, '37': 22, '13': 7, '45': 14, '23': 10, '180': 7, '50': 14, '188': 35, '24': 7, '139': 18, '148': 12, '151': 4, '2': 18, '34': 4, '77': 32, '81': 44, '82': 11, '92': 19, '95': 29, '98': 7, '217': 21, '172': 14, '35': 148, '146': 7, '91': 21, '103': 21, '184': 28, '165': 7, '108': 7, '112': 7, '118': 7, '159': 7, '183': 7, '186': 7, '205': 7, '60': 7, '67': 7, '76': 7, '86': 7, '209': 7, '174': 7, '194': 1} table = pd.DataFrame(dic, index=[0]) y = [int(item) for item in table.columns.tolist()] table.loc[1] = table.loc[0] table.loc[0] = y table = table.transpose() table.columns = ['Start', 'Quantity'] table.index = list(range(len(table.index))) writer = pd.ExcelWriter('output.xlsx') table.to_excel(writer,'Sheet1', index = False) writer.save()
avez-vous essayé openpyxl? openpyxl.readthedocs.io/en/stable/tutorial.html (et post un peu de code, s'il vous plaît)
Que diriez-vous de créer une trame de données à partir du tableau de clés et du tableau de valeurs de votre dictionnaire?