Impossible de renommer les colonnes d'un objet table / liste. (python / tabulaire)
Cela fait maintenant 2 jours que je lutte avec cette affaire en raison de mon incompétence. Après avoir essayé presque toutes les solutions stackoverflow et autres, je n'ai malheureusement pas trouvé de chance.
J'utilise Tabular-Py pour importer des tableaux à partir de PDF. Après quoi, c'est déjà "parfaitement" dans ce qui semble être un dataframe. La partie du code utilisée pour cela est:
tables = tabula.read_pdf(file, pages=18, lattice=True, multiple_tables = False)
Print(Tables)
[Sortie après impression du tableau] [1]: https://i.stack.imgur.com/82Qpa.png
Cependant, cela semble être un objet de liste, car cela m'empêche de faire autre chose avec lui que l'impression. Même l'utilisation d'entiers et le changement de nom des colonnes ne fonctionnent pas en raison des erreurs qui renvoient à "Impossible de XX car c'est un objet de liste". J'avais l'impression que Tabular fait un Pandas Dataframe direct.
Maintenant, lorsque j'essaye d'ajouter le code suivant pour renommer les colonnes comme souhaité:
tables.columns = ['HS_Code', 'Product', 'PreviousMonth', 'CurrentMonth', 'LastYear']
J'obtiens l'erreur:
AttributeError: l'objet 'liste' n'a pas d'attribut 'colonnes'
J'ai essayé de nombreuses formes de changement de nom et d'utilisation de différents ensembles de sortie tels que Json. Toujours pas de chance, c'est toujours un "objet liste".
Quelqu'un at-il une expérience dans ce domaine? Comment puis-je m'assurer que la table / trame de données que j'ai est une trame de données réelle au lieu d'un objet de liste?
Tous les conseils seraient très appréciés.
Réponses
Je ne suis pas familier avec les objets tabula-py mais compte tenu de ce post, vous pouvez faire ce qui suit:
- utiliser
pandas.read_clipboard()après avoir copié le contenu pdf à la main ou 2. enregistrer l'objet tabula-py en tant que csv et utiliserpandas.read_csv()pour obtenir le DataFrame
Ensuite, vous pouvez manipuler les données (par exemple, changer les noms de colonne) en utilisant des pandas.