écrire dataframe de fichier excel au chemin donné
I have a dataframe
df = pd.DataFrame({'Data': [10, 20, 30, 20, 15, 30, 45]})
This is working :
writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')
writer.save()
but when I try
out_path = "C:\Users\Bala\output\temp-excel.xlsx"
writer = pd.ExcelWriter(out_path , engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')
writer.save()
J'obtiens une erreur : IOError: [Errno 22] mode non valide ('wb') ou nom du fichier: 'C:\Users\Bala Nadella\output\temp-excel.xlsx'.
Comment créer un fichier dans le chemin d'accès donné.
Vous devez ajouter l'erreur que vous obtenez. Le répertoire C:\Users\Bala\output\ existent?
Oui. C'est le répertoire local de ma boîte, et il fonctionne pour to_csv.
Oui. C'est le répertoire local de ma boîte, et il fonctionne pour to_csv.
OriginalL'auteur balakishore nadella | 2016-08-10
Vous devez vous connecter pour publier un commentaire.
Les littéraux de chaîne
Étude le tableau dans le lien. Vous devez vous échapper de votre"\","\\'. En partie, le DOS est responsable de ce gâchis dans le monde.
Ou
Mais la meilleure solution est: est-ce
Il fonctionne sur toute plate-forme.
Édité pour enlever la solution avec
os.path.abspath
. Après le commentaire en dessous de cette réponse, j'ai lu la documentation de moi-même et a compris qu'il a un but différent. Bien que je l'ai utilisé dans le passé pour rendre mon code dual OS amicale, parce que d'une manière ordonnée ajoute la MDC pour le chemin d'accès, et les changements/
à\\
lors du passage de Debian pour Windows et vice versa.os.path.abspath
est une belle fonction, mais vous avez complètement déformé ce qu'il fait. Il ne peut pas interpréter comme par magie littérale des barres obliques inverses dans les chaînes, et il n'est pas du tout ce qui est nécessaire ici. Honnêtement, le meilleur la solution pour utiliser des barres obliques à la place des barres obliques inverses (même sous Windows). Si vous insistez sur l'utilisation de barres obliques inverses, vous devriez être à l'aide de chaînes brutes.Vous êtes de droite. Réponse d'édition. J'ai utilisé de l'utiliser pour les situations, lorsque j'avais à la fois Windows et Ubuntu sur ma machine, et exige le même code à exécuter sur les fichiers dans mon MDC. Je l'ai trouvé très pratique, mais ce n'est pas la solution à cette question.
Bon montage, maintenant je me sens à l'aise upvoting cette réponse.
Ne fonctionne toujours pas pour moi en quelque sorte. J'ai essayé de renvoyer l'ensemble de la chose dans une fonction:
def excel_to_path(frame, path): writer = pd.ExcelWriter(path , engine='xlsxwriter') frame.to_excel(writer, sheet_name='Sheet1') writer.save()
et de passerdf
et"../foo/bar/myfile.xlsx"
des idées?essayez de remplacer le chemin d'accès relatif avec chemin d'accès absolu. Aussi s'il vous plaît utiliser les gestionnaire de contexte. Le doc montre pandas mise en œuvre. Il va sauver vos fesses quand quelque chose va mal.
OriginalL'auteur Kartik
Dans une chaîne de l'antislash est un caractère d'échappement. Cela signifie que vous donnez une commande spéciale, pas un caractère normal. Par exemple.
"Hello\nWorld"
signifie, mettre un saut de ligne entre"Hello"
et"World"
.Si vous voulez vraiment utiliser une barre oblique inverse comme un personnage, un type comme
"\\"
.Ou, mieux encore, il suffit d'utiliser des barres obliques!
OriginalL'auteur user357269