tablas - seleccionar columnas pandas python
Imprime una cadena muy larga completamente en el marco de datos de pandas (6)
¿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''
Estoy luchando con algo aparentemente muy simple. Tengo un marco de datos 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 intento imprimir lo mismo, no veo la cadena completa, sino que solo veo parte de la cadena.
Intenté las siguientes opciones
-
utilizando
print(df.iloc[2])
-
usando
to_html
-
usando
to_string
- Una de las respuestas de stackoverflow sugirió aumentar el ancho de columna mediante la opción de visualización de pandas, que tampoco funcionó.
-
Tampoco entendí cómo
set_printoptions
me ayudará.
Cualquier idea apreciada. ¡Parece muy simple, pero no puede obtenerlo!
La forma en que a menudo trato con la situación que describe es usar el método
.to_csv()
y escribir en stdout:
import sys
df.to_csv(sys.stdout)
Actualización: ¡ahora debería ser posible usar
None
lugar de
sys.stdout
con un efecto similar!
Esto debería volcar todo el marco de datos, incluida la totalidad de las cadenas. Puede usar los parámetros to_csv para configurar separadores de columna, ya sea que se imprima 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 marco de datos en pandas
Otra forma más fácil de imprimir toda la cadena es llamar
values
en el marco de datos.
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'']]
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 que no es bueno convencer para enumerar las columnas completas, sino para una línea simple: ¿por qué no?
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 el valor único, accediendo a él (como un escalar, no como una fila como lo 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''
Utilice
pd.set_option(''display.max_colwidth'', -1)
para los saltos de línea automáticos y las celdas de varias líneas.
This es un gran recurso sobre cómo usar jupyters display con pandas al máximo.