¿Cómo mostrar el nombre de todas las columnas en el marco de datos de pandas?

131

Tengo un marco de datos que consta de cientos de columnas y necesito ver todos los nombres de las columnas.

Lo que hice:

In[37]:
data_all2.columns

La salida es:

Out[37]:
Index(['customer_id', 'incoming', 'outgoing', 'awan', 'bank', 'family', 'food',
       'government', 'internet', 'isipulsa',
       ...
       'overdue_3months_feature78', 'overdue_3months_feature79',
       'overdue_3months_feature80', 'overdue_3months_feature81',
       'overdue_3months_feature82', 'overdue_3months_feature83',
       'overdue_3months_feature84', 'overdue_3months_feature85',
       'overdue_3months_feature86', 'loan_overdue_3months_total_y'],
      dtype='object', length=102)

¿Cómo muestro todas las columnas, en lugar de una lista truncada?

Nabih Bawazir
fuente

Respuestas:

199

Puede configurar globalmente las opciones de impresión. Creo que esto debería funcionar:

Método 1:

pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)

Método 2:

pd.options.display.max_columns = None
pd.options.display.max_rows = None

Esto le permitirá ver todos los nombres y filas de las columnas cuando lo esté haciendo .head(). Ninguno de los nombres de la columna se truncará.


Si solo desea ver los nombres de las columnas, puede hacer lo siguiente:

print(df.columns.tolist())
YOLO
fuente
3
@EEE No, responde la pregunta. Lo acabo de probar, muestra todas las columnas en lugar de una lista truncada. No dijo campo truncado, dijo lista de columnas.
rjurney
3
Ahh, tienes razón. Estaba equivocado. Gracias, @rjurney. Y lo siento YOLO. ¡Estaba haciendo df.columns en lugar de df.head ()! ¿Debo borrar mi comentario anterior incorrecto?
EEE
Sí, eso creo.
rjurney
1
es mucho mejor establecer un valor finito como 500, de lo contrario, tardará una eternidad en ejecutarse si imprime un gran marco de datos
Thomas G.
Lo siento, pero ¿cómo apagarlo? Actualmente, mi solución tonta es simplemente cerrar Anaconda y volver a abrirla. Bueno, ¿hay algo legítimo para sacarlo sin hacerlo?
Chen Lizi
45

Para obtener todos los nombres de columna de un DataFrame, df_dataen este ejemplo, solo necesita usar el comando df_data.columns.values. Esto le mostrará una lista con todos los nombres de columna de su marco de datos

Código:

df_data=pd.read_csv('../input/data.csv')
print(df_data.columns.values)

Salida:

['PassengerId' 'Survived' 'Pclass' 'Name' 'Sex' 'Age' 'SibSp' 'Parch' 'Ticket' 'Fare' 'Cabin' 'Embarked']
barra diagonal rosada
fuente
Esta es la verdadera respuesta a esta pregunta, gracias @ pink.slash
Interlooper
Si me gustaría ver también los números de las columnas, ¿es posible? Mi df tiene 200 columnas y me gustaría usar una fracción de ellas, y estaba pensando que podría usar los números en lugar de escribir el nombre de cada columna.
Mactilda
11

En la consola interactiva, es fácil de hacer:

data_all2.columns.tolist()

O esto dentro de un script:

print(data_all2.columns.tolist())
EEE
fuente
6

Esto hará el truco. Tenga en cuenta el uso de en display()lugar de imprimir.

with pd.option_context('display.max_rows', 5, 'display.max_columns', None): 
    display(my_df)

EDITAR:

Se displayrequiere el uso de porque la pd.option_contextconfiguración solo se aplica a displayy no a print.

nico
fuente
Me gusta que la withpalabra clave aplique la opción solo al bloque a continuación. Sin embargo, funciona bien con print(). ¿Por qué debería usar en display()lugar de print()?
Vincent Agami
@VincentAgami El uso de la pantalla es necesario porque la configuración de pd.option_context solo se aplica a la pantalla y no a la impresión. He actualizado la respuesta para incluir esta información.
nico
5

Lo que funcionó para mí fue lo siguiente:

pd.options.display.max_seq_items = None

También puede establecerlo en un número entero mayor que su número de columnas.

S. Tibbitts
fuente
3

La forma más fácil que he encontrado es simplemente

list(df.columns)

Personalmente, no querría cambiar los globales, no es tan frecuente que quiera ver todos los nombres de las columnas.

Sherman
fuente
2

Para obtener el nombre de todas las columnas, puede iterar sobre el archivo data_all2.columns.

columns = data_all2.columns
for col in columns:
    print col

Obtendrá todos los nombres de las columnas. O puede almacenar todos los nombres de columna en otra variable de lista y luego imprimir la lista.

Ashwani Shakya
fuente
1

Si solo desea ver todas las columnas, puede hacer algo de este tipo como solución rápida

cols = data_all2.columns

ahora cols se comportará como una variable iterativa que se puede indexar. por ejemplo

cols[11:20]
Rao Sahab
fuente
1

Una solución rápida y sucia sería convertirlo en una cuerda.

print('\t'.join(data_all2.columns))

haría que todos se imprimieran separados por pestañas. Por supuesto, tenga en cuenta que con 102 nombres, todos ellos bastante largos, será un poco difícil de leer.

David L
fuente
1

puedes probar esto

pd.pandas.set_option('display.max_columns', None)
naimur978
fuente
1

No es una respuesta convencional, pero supongo que podría transponer el marco de datos para mirar las filas en lugar de las columnas. Utilizo esto porque encuentro que mirar filas es más 'intuitivo' que mirar columnas:

data_all2.T

Esto debería permitirle ver todas las filas. Esta acción no es permanente , solo le permite ver la versión transpuesta del marco de datos.

Si las filas aún están truncadas, solo use print(data_all2.T) para ver todo.

Un hombre
fuente
No es una respuesta convencional, pero supongo que podría transponer el marco de datos para mirar las filas en lugar de las columnas. Todo lo que quieren son los nombres de las columnas, ¿no? Si las filas aún están truncadas, simplemente use print (data_all2.T) para ver todo. ¿Cómo resolvería el problema la impresión del resultado? ¿No lo estás imprimiendo de todos modos?
AMC
-1

Sé que es una repetición pero siempre termino copiando pegando y modificando la respuesta de YOLO:

pd.set_option('display.max_columns', 500)
pd.set_option('display.max_rows', 500)
Thomas G.
fuente