es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Agregar dataframe

Estoy intentando obtener el precio de las acciones de Tiingo y agregarlos a los dataframes.

data = pd.DataFrame()

lis = ["AAPL", "MSFT", "AMZN", "GOOGL", "TSLA", "GOOG", "NVDA", "FB", "JPM", "BAC", "ADBE", "MA", "PFE", "DIS", "NFLX", "INTC", "VZ", "MO"]

for i in lis:
    data = data.append(client.get_dataframe([i], frequency='weekly', metric_name='close', startDate='2020-03-01', endDate='2021-12-10'))

Sin embargo, el resultado muestra algo diferente:

             AAPL  MFST
2020-03-01   100   NAN
2020-03-02   101   NAN
2020-03-03   103   NAN
...                NAN
2021-12-10   120   NAN
2020-03-01   NAN   600
2020-03-02   NAN   400
2020-03-03   NAN   300
...               NAN
2021-12-10   NAN   1100

¿Cómo puedo hacer que se vea así?

             AAPL  MFST
2020-03-01   100   600
2020-03-02   101   400
2020-03-03   103   300
...<br>
2021-12-10   120   1100
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puedes lograr el resultado deseado modificando el bucle for de la siguiente manera:

    for i in lis:
        temp = client.get_dataframe([i],
                                    frequency='weekly',
                                    metric_name='close',
                                    startDate='2020-03-01',
                                    endDate='2021-12-10')
        if data.empty:
            data = temp
        else:
            data = pd.concat([data, temp], axis=1, sort=True)
    

    Este código crea un dataframe temporal temp para cada símbolo de stock en la lista y luego lo concatena con el dataframe data utilizando la función pd.concat(). El parámetro sort se establece en True para ordenar las columnas en orden ascendente.

    Por defecto, pd.concat alineará los dataframes según el índice de las filas. Dado que los parámetros startDate y endDate son iguales para todas las acciones, el índice de las filas será idéntico en todos los dataframes, y la concatenación a lo largo del eje de las columnas (axis=1) producirá el resultado deseado.

    El código también verifica si el dataframe data está vacío antes de concatenarlo con temp para asegurar que los encabezados de las columnas se preserven correctamente.

Comments are closed.