Se me ocurre abrir el .csv como Objeto donde cada línea sería un Diccionario e ir iterando línea a línea creando/abriendo un archivo en modo Append (agregar al final) con el nombre de la Liga para luego agregar en él los Campos del Diccionario/Línea actual
partidos.csv
columna1,columna2,columna3,columna4,columna5,liga
dato1,dato2,dato3,dato4,dato5,liga1
dato1,dato2,dato3,dato4,dato5,liga1
dato1,dato2,dato3,dato4,dato5,liga1
dato1,dato2,dato3,dato4,dato5,liga2
dato1,dato2,dato3,dato4,dato5,liga3
dato1,dato2,dato3,dato4,dato5,liga2
dato1,dato2,dato3,dato4,dato5,liga1
import csv, os
with open('partidos.csv') as f :
df = csv.DictReader(f)
for row in df :
fieldnames = list(row)
exists = os.path.exists(row['liga'] + '.csv')
with open(row['liga'] + '.csv', 'a', newline='') as l :
writer = csv.DictWriter(l, fieldnames=fieldnames)
if not exists :
writer.writeheader()
writer.writerow(row)
1. Importo csv y os
3. Abro el archivo partidos.csv bajo el nombre de "f" en modo solo teto de lectura (por defecto)
4. Creo el Objeto DictReader a partir del archivo leído
5. Itero fila a fila (cada fila es un Diccionario) el Objeto DictReader
6. Creo un Diccionario con la primera línea del archivo csv que se supone es la cabecera de títulos (fielnames)
7. Creo una variable Boolean para comprobar si existe o no el archivo con el nombre de la Liga
8. Creo o Abro un archivo csv con el nombre igual a la Liga
9. Creo mi Objeto DictWriter para poder escribir líneas (cada línea es un Diccionario) en el archivo
10. y 11. Si el archivo no existía le agrego los títulos de columna (fieldnames)
12. Inserto la línea con los datos del Diccionario Fila
Aunque siempre se pueden solo extraer las Columnas (fielnames) que uno desee y no todas ...