web-dev-qa-db-fra.com

Imprimer très longue chaîne complètement dans le cadre de données pandas

Je me bats avec la chose apparemment très simple. J'ai un bloc de données de pandas contenant une très longue chaîne.

df = pd.DataFrame({'one' : ['one', 'two', 
      'This is very long string very long string very long string veryvery long string']})

Maintenant, lorsque j'essaie d'imprimer la même chose, je ne vois pas la chaîne complète mais plutôt une partie de celle-ci.

J'ai essayé les options suivantes 

  • en utilisant print(df.iloc[2]) 
  • en utilisant to_html
  • en utilisant to_string
  • L'une des réponses à la pile de flux suggéra d'augmenter la largeur de colonne de En utilisant l'option d'affichage des pandas, cela ne fonctionnait pas non plus.
  • Je n'ai pas non plus compris comment set_printoptions m'aiderait.

Toutes les idées appréciées. Ça a l'air très simple, mais pas capable de l'obtenir! 

56
Yantraguru

Vous pouvez utiliser options.display.max_colwidth pour spécifier que vous souhaitez en voir plus dans la représentation par défaut:

In [2]: df
Out[2]:
                                                 one
0                                                one
1                                                two
2  This is very long string very long string very...

In [3]: pd.options.display.max_colwidth
Out[3]: 50

In [4]: pd.options.display.max_colwidth = 100

In [5]: df
Out[5]:
                                                                               one
0                                                                              one
1                                                                              two
2  This is very long string very long string very long string veryvery long string

Et en effet, si vous voulez juste inspecter la valeur unique, en y accédant (en tant que scalaire et non comme une ligne comme le fait df.iloc[2]), vous voyez également la chaîne complète:

In [7]: df.iloc[2,0]    # or df.loc[2,'one']
Out[7]: 'This is very long string very long string very long string veryvery long string'
85
joris

Une autre approche assez simple consiste à appeler une fonction de liste:

list(df['one'][2])
# output:
['This is very long string very long string very long string veryvery long string']

Pas la peine de mentionner, ce n’est pas bon de conventionner pour énumérer les colonnes entières, mais pour une ligne simple

6
Rocketq

Est-ce ce que vous vouliez faire?

In [7]: x =  pd.DataFrame({'one' : ['one', 'two', 'This is very long string very long string very long string veryvery long string']})

In [8]: x
Out[8]: 
                                                 one
0                                                one
1                                                two
2  This is very long string very long string very...

In [9]: x['one'][2]
Out[9]: 'This is very long string very long string very long string veryvery long string'
4
fixxxer

Utilisez pd.set_option('display.max_colwidth', -1) pour les sauts de ligne automatiques et les cellules multilignes.

Ceci est une excellente ressource pour savoir comment utiliser au maximum les jupyters display with pandas.

3
omnesia

Un autre moyen plus facile d’imprimer la chaîne entière consiste à appeler values sur la structure de données.

df = pd.DataFrame({'one' : ['one', 'two', 
      'This is very long string very long string very long string veryvery long string']})

print(df.values)

La sortie sera

[['one']
 ['two']
 ['This is very long string very long string very long string veryvery long string']]
2
bigbounty

La façon dont je traite souvent la situation que vous décrivez consiste à utiliser la méthode .to_csv() et à écrire sur stdout:

import sys

df.to_csv(sys.stdout)

Mise à jour: il devrait maintenant être possible d'utiliser simplement None au lieu de sys.stdout avec un effet similaire! 

Cela devrait vider l'intégralité du cadre de données, y compris l'intégralité des chaînes. Vous pouvez utiliser les paramètres to_csv pour configurer les séparateurs de colonnes, que l'index soit imprimé, etc. Ce sera moins joli que de le restituer correctement.

J'ai posté ceci à l'origine en réponse à la question plus ou moins liée à Les données de sortie de toutes les colonnes d'un cadre de données en pandas

1
user2428107