Pandas anexar a CSV

Manav Narula 15 febrero 2024
Pandas anexar a CSV

Python Pandas nos permite manipular y gestionar los datos de forma eficiente. Podemos crear y gestionar DataFrames y realizar varias operaciones en ellos. También nos permite leer un archivo externo CSV o excel, importar DataFrames, trabajar en ellos y guardarlos de nuevo. Una característica interesante en el almacenamiento de datos es el modo append utilizando el parámetro a, que puede ser utilizado para añadir datos a un archivo CSV ya existente.

Este artículo introducirá cómo añadir datos a CSV usando Pandas.

import pandas as pd

df = pd.DataFrame([[6, 7, 8], [9, 12, 14], [8, 10, 6]], columns=["a", "b", "c"])

print(df)

df.to_csv(r"C:\Test\data.csv", index=False)

df2 = pd.DataFrame([[4, 1, 3], [6, 7, 2], [5, 9, 4]], columns=["a", "b", "c"])

print(df2)

df2.to_csv(r"C:\Test\data.csv", mode="a", header=False, index=False)

Resultado:

   a   b   c
0  6   7   8
1  9  12  14
2  8  10   6
   a  b  c
0  4  1  3
1  6  7  2
2  5  9  4

pandas anexar a csv

El archivo CSV guardado tendrá los dos DataFrames con los datos de df2 adjuntos al archivo original.

También hay otra característica adicional que podemos añadir a este código. Con sólo unas pocas líneas de código, podemos asegurarnos de que la función to_csv() creará un archivo si no existe y saltará las cabeceras si ya existe. Usaremos la sentencia with para el manejo de excepciones y open() para abrir un archivo.

import pandas as pd

df = pd.DataFrame([[6, 7, 8], [9, 12, 14], [8, 10, 6]], columns=["a", "b", "c"])

print(df)

df.to_csv(r"C:\Test\data.csv", index=False)

df2 = pd.DataFrame([[4, 1, 3], [6, 7, 2], [5, 9, 4]], columns=["a", "b", "c"])

print(df2)

with open(r"C:\Test\data.csv", mode="a") as f:
    df2.to_csv(f, header=f.tell() == 0, index=False)

Resultado:

   a   b   c
0  6   7   8
1  9  12  14
2  8  10   6
   a  b  c
0  4  1  3
1  6  7  2
2  5  9  4

El método tell() del objeto archivo devuelve la posición actual del cursor. Por lo tanto, si el archivo está vacío o no existe, f.tell==0 es True, por lo que header está establecido como True; de lo contrario, header está establecido como False.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn