Cómo Convertir un Pandas DataFrame a una Lista
Updated on
Convertir un Pandas DataFrame a una lista de Python es una tarea común en limpieza de datos, exportación, ingeniería de características y preparación de datos para APIs. Aunque tolist() sigue siendo muy usado, Pandas ha introducido enfoques más explícitos y modernos—como to_numpy() y to_dict()—que a menudo ofrecen mejor claridad y rendimiento.
Esta guía actualizada cubre:
- Convertir un DataFrame a una lista de listas
- Convertir una única columna a lista
- Crear listas o tuplas anidadas
- Alternativas modernas como lista de diccionarios (muy usada para salida JSON/API)
⚡ Bonus: Visualiza tus Datos al Instante
¿Quieres explorar tu DataFrame de forma visual sin escribir código de gráficos?
PyGWalker es una herramienta de Python de código abierto que convierte tu Pandas o Polars DataFrame en una interfaz interactiva tipo Tableau dentro de Jupyter Notebook.
Simplemente instala y ejecuta:
pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)| Run in Kaggle (opens in a new tab) | Run in Google Colab (opens in a new tab) | ⭐ GitHub (opens in a new tab) |
|---|
🧩 1. Convertir un DataFrame Completo a Lista (Lista de Listas)
La forma más común es convertir cada fila en una lista.
✔ Recomendado : df.to_numpy().tolist()
import pandas as pd
df = pd.DataFrame({'numbers': [1, 2, 3], 'letters': ['a', 'b', 'c']})
list_from_df = df.to_numpy().tolist()
print(list_from_df)Salida:
[[1, 'a'], [2, 'b'], [3, 'c']]¿Por qué preferir to_numpy() sobre df.values?
df.valueses más antiguo y puede comportarse de forma inconsistente con ciertos dtypesto_numpy()es el método moderno y explícito recomendado por Pandas
🧩 2. Convertir una Única Columna a Lista
Usa Series.tolist() — rápido y limpio.
list_from_column = df["numbers"].tolist()
print(list_from_column)Salida:
[1, 2, 3]🧩 3. Crear Listas o Tuplas Anidadas (Lista de Tuplas)
Si necesitas tuplas (por ejemplo, para inserts en SQL o entradas de APIs):
nested_list = [tuple(row) for row in df.to_numpy()]
print(nested_list)Salida:
[(1, 'a'), (2, 'b'), (3, 'c')]Alternativa usando to_records():
nested_list = [tuple(x) for x in df.to_records(index=False)]⭐ Bonus: Convertir a Lista de Diccionarios (Ideal para JSON / APIs)
Muchas aplicaciones del mundo real esperan objetos tipo JSON.
list_of_dicts = df.to_dict(orient="records")
print(list_of_dicts)Salida:
[
{"numbers": 1, "letters": "a"},
{"numbers": 2, "letters": "b"},
{"numbers": 3, "letters": "c"}
]Este es el formato moderno más común para:
- APIs
- Exportar características de machine learning
- Escribir en archivos JSON
- Pasar datos estructurados entre sistemas
📌 Ejemplos Rápidos (Resumen)
# lista de listas
df.to_numpy().tolist()
# usando df.values (más antiguo)
df.values.tolist()
# columna → lista
df["numbers"].tolist()
# lista de tuplas
[tuple(x) for x in df.to_numpy()]
# lista de diccionarios (lista apta para JSON)
df.to_dict("records")✅ Conclusión
Convertir un Pandas DataFrame a una lista es sencillo, pero elegir el formato adecuado depende de tu caso de uso:
| Objetivo | Mejor método |
|---|---|
| Representar filas como listas | df.to_numpy().tolist() |
| Convertir una única columna | df[col].tolist() |
| Usar tuplas (SQL/API) | [tuple(x) for x in df.to_numpy()] |
| Convertir a objetos tipo JSON | df.to_dict("records") |
Con estas técnicas modernas podrás transformar tu DataFrame de forma clara y eficiente, ya sea que estés preparando datos para modelado, visualización o exportación.