Cómo crear una función con SQL en Python y crear columnas?
Estoy accediendo a una base de datos de Microsoft SQL Server con pyodbc en Python y tengo muchas tablas relacionadas con estados y años. Estoy intentando crear un pandas.DataFrame con todas ellas, pero no sé cómo crear una función y al mismo tiempo crear columnas especificando YEAR y STATE para cada uno de estos estados y años (estoy usando NY2000 como ejemplo). ¿Cómo debo construir esa función o “if loop”? Disculpa la falta de claridad, es mi primera publicación aquí :/
tables = tuple([NY2000DX, NY2001DX, NY2002DX, AL2000DX, AL2001DX, AL2002DX, MA2000DX, MA2001DX, MA2002DX])
jobs = tuple([55, 120])
query = """SELECT
ID,
Job_ID
FROM {}
WHERE Job_ID IN {}""".format(tables, jobs)
NY2000 = pd.read_sql(query, server)
NY2000["State"] = "NY"
NY2000["Year"] = 2000
Mi resultado deseado sería un DF con la información de todas las tablas con columnas que especifiquen State y Year. Como:
Year | State | ID | Job_ID |
---|---|---|---|
2000 | NY | 13 | 55 |
2001 | NY | 20 | 55 |
2002 | NY | 25 | 55 |
2000 | AL | 15 | 120 |
2001 | AL | 60 | 120 |
2002 | AL | 45 | 120 |
———— | ——- | ——– | ———- |
Gracias por el apoyo 🙂
davy.ai
Para lograr el resultado deseado, puedes crear una función que tome el estado y el año como parámetros y devuelva un pandas.DataFrame para ese estado y año en particular. Luego, puedes usar un bucle para iterar a través de todas las tablas y llamar a la función con los valores de estado y año apropiados.
Aquí tienes un ejemplo de código:
En el código anterior, definimos una función llamada
get_data
que toma un estado y un año como parámetros. La función crea dinámicamente el nombre de la tabla basado en el estado y el año, recupera los datos usando pyodbc y pandas, y agrega columnas para el estado y el año. Luego, la función devuelve el pandas.DataFrame resultante.Luego, definimos una lista de estados y años para los cuales queremos obtener datos. Usamos un bucle para llamar a la función
get_data
para cada combinación de estado y año, y añadimos los dataframes resultantes a una lista.Finalmente, concatenamos todos los dataframes de la lista en un único dataframe final, e imprimimos el resultado.
Esto debería brindarte el resultado deseado con columnas que especifican el estado y el año.