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
print(df.iloc[2])
to_html
to_string
set_printoptions
m'aiderait.Toutes les idées appréciées. Ça a l'air très simple, mais pas capable de l'obtenir!
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'
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
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'
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.
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']]
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