Imprimir cadena muy larga completamente en el dataframe pandas

Estoy luchando con lo que parece muy simple. Tengo un dataframe de pandas que contiene una cadena muy larga.

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

Ahora, cuando bash imprimir lo mismo, no veo la cadena completa, solo veo una parte de la cadena.

Probé las siguientes opciones

  • utilizando print(df.iloc[2])
  • usando to_html
  • usando to_string
  • Una de las respuestas de stackoverflow sugerida para boost el ancho de columna mediante el uso de la opción de visualización de pandas, tampoco funcionó.
  • Tampoco entendí cómo set_printoptions me ayudará.

Cualquier idea apreciada. Parece muy simple, pero no es capaz de conseguirlo!

Puede usar options.display.max_colwidth para especificar que desea ver más en la representación predeterminada:

 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 

Y, de hecho, si solo desea inspeccionar un valor, accediendo a él (como un escalar, no como una fila como hace df.iloc[2] ) también verá la cadena completa:

 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' 

Otro enfoque bastante simple es llamar a la función de lista:

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

No vale la pena mencionar, eso no es bueno convocar para enumerar todas las columnas, pero para una línea simple, ¿por qué no?

¿Es esto lo que querías hacer?

 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' 

Otra forma más fácil de imprimir toda la cadena es invocar values en el dataframe.

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

La salida será

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

Use pd.set_option('display.max_colwidth', -1) para saltos de línea automáticos y celdas multilínea.

Este es un gran recurso sobre cómo usar la visualización de jupyters con pandas al máximo.

La forma en que a menudo trato con la situación que describe es usar el método .to_csv() y escribir en la .to_csv() :

 import sys df.to_csv(sys.stdout) 

Actualización: ahora debería ser posible simplemente utilizar None lugar de sys.stdout con un efecto similar.

Esto debería volcar todo el dataframe, incluida la totalidad de las cadenas. Puede usar los parámetros to_csv para configurar los separadores de columna, si se imprime el índice, etc. Sin embargo, será menos bonito que representarlo correctamente.

Publiqué esto originalmente en respuesta a la pregunta algo relacionada en Datos de salida de todas las columnas en un dataframe en pandas